otsdaq_utilities  v2_05_02_indev
JSRoot.openui5.js
1 
5 (function( factory ) {
6  if ( typeof define === "function" && define.amd ) {
7  define( ['jquery', 'jquery-ui', 'JSRootCore' ], factory );
8  } else {
9 
10  if (typeof jQuery == 'undefined')
11  throw new Error('jQuery not defined', 'JSRoot.openui5.js');
12 
13  if (typeof jQuery.ui == 'undefined')
14  throw new Error('jQuery-ui not defined','JSRoot.openui5.js');
15 
16  if (typeof JSROOT == 'undefined')
17  throw new Error('JSROOT is not defined', 'JSRoot.openui5.js');
18 
19  factory(jQuery, jQuery.ui, JSROOT);
20  }
21 } (function($, myui, JSROOT) {
22 
23  "use strict";
24 
25  JSROOT.sources.push("openui5");
26 
27  var load_callback = JSROOT.complete_script_load;
28  delete JSROOT.complete_script_load; // normal callback is intercepted - we need to instantiate openui5
29 
30  JSROOT.completeUI5Loading = function() {
31  // when running with THttpServer, automatically set "rootui5" folder
32  var rootui5sys = undefined;
33  if (JSROOT.source_dir.indexOf("jsrootsys") >= 0)
34  rootui5sys = JSROOT.source_dir.replace(/jsrootsys/g, "rootui5sys");
35 
36  sap.ui.loader.config({
37  paths: {
38  jsroot: JSROOT.source_dir,
39  rootui5: rootui5sys
40  }
41  });
42 
43  JSROOT.CallBack(load_callback);
44  load_callback = null;
45  }
46 
47  function TryOpenOpenUI(sources) {
48 
49  // where to take openui5 sources
50  var src = sources.shift();
51 
52  if ((src.indexOf("roothandler")==0) && (src.indexOf("://")<0)) src = src.replace(/\:\//g,"://");
53 
54  var element = document.createElement("script");
55  element.setAttribute('type', "text/javascript");
56  element.setAttribute('id', "sap-ui-bootstrap");
57  // use nojQuery while we are already load jquery and jquery-ui, later one can use directly sap-ui-core.js
58 
59  // this is location of openui5 scripts when working with THttpServer or when scripts are installed inside JSROOT
60  element.setAttribute('src', src + "resources/sap-ui-core-nojQuery.js"); // latest openui5 version
61 
62  element.setAttribute('data-sap-ui-libs', JSROOT.openui5libs || "sap.m, sap.ui.layout, sap.ui.unified, sap.ui.commons");
63 
64  element.setAttribute('data-sap-ui-theme', 'sap_belize');
65  element.setAttribute('data-sap-ui-compatVersion', 'edge');
66  // element.setAttribute('data-sap-ui-bindingSyntax', 'complex');
67 
68  element.setAttribute('data-sap-ui-preload', 'async'); // '' to disable Component-preload.js
69 
70  element.setAttribute('data-sap-ui-evt-oninit', "JSROOT.completeUI5Loading()");
71 
72  element.onerror = function() {
73  // remove failed element
74  element.parentNode.removeChild(element);
75  // and try next
76  TryOpenOpenUI(sources);
77  }
78 
79  element.onload = function() {
80  console.log('Load openui5 from ' + src);
81  }
82 
83  document.getElementsByTagName("head")[0].appendChild(element);
84  }
85 
86  var openui5_sources = [],
87  openui5_dflt = "https://openui5.hana.ondemand.com/1.70.0/",
88  openui5_root = JSROOT.source_dir.replace(/jsrootsys/g, "rootui5sys/distribution");
89 
90  if (openui5_root == JSROOT.source_dir) openui5_root = "";
91 
92  if (typeof JSROOT.openui5src == 'string') {
93  switch (JSROOT.openui5src) {
94  case "nodefault": openui5_dflt = ""; break;
95  case "default": openui5_sources.push(openui5_dflt); openui5_dflt = ""; break;
96  case "nojsroot": openui5_root = ""; break;
97  case "jsroot": openui5_sources.push(openui5_root); openui5_root = ""; break;
98  default: openui5_sources.push(JSROOT.openui5src); break;
99  }
100  }
101 
102  if (openui5_root && (openui5_sources.indexOf(openui5_root)<0)) openui5_sources.push(openui5_root);
103  if (openui5_dflt && (openui5_sources.indexOf(openui5_dflt)<0)) openui5_sources.push(openui5_dflt);
104 
105  TryOpenOpenUI(openui5_sources);
106 
107  return JSROOT;
108 
109 }));
110