Skip to content

Commit 8f71b71

Browse files
authored
Widgets SDK v1.5 - ZRC and ZDK.Client Support (#28)
ZRC - ZRC allows users to make api calls using a widget. This comes with a variety of features to allow users to make api calls. Users will be able to make api calls to CRM APIs, Connection APIs, and External APIs Multi page support - Modern web applications are made with frontend frameworks like React, Angular, Lyte etc. These frameworks have a soft navigation support i.e. users can navigate to different pages in the App without the app being reloaded. This behaviour is now fully supported in CRM Widgets with this SDK v1.5. ZDK.Cient.showMessage() - show a toast message in Page with the markdown support. ZDK.Cient.showConfirmation() - Show a toast message in Page with the markdown support. ZDK.Cient.showAlert() - Show Alert message with markdown support. ZDK.Cient.getInput() - Get one or more input. ZDK.Cient.openPopup() - Opens a widget ZDK.Cient.showLoader() - Shows loader ZDK.Cient.hideLoader() - Hides the Loader
1 parent 90af571 commit 8f71b71

File tree

11 files changed

+4181
-120
lines changed

11 files changed

+4181
-120
lines changed

.babelrc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"presets": [
3+
["@babel/preset-env", { "targets": { "ie": "11" } }]
4+
]
5+
}

.babelrc.modern.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"presets": [
3+
[
4+
"@babel/preset-env",
5+
{
6+
"targets": {
7+
"chrome": "73",
8+
"firefox": "69",
9+
"safari": "13"
10+
}
11+
}
12+
]
13+
]
14+
}

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,4 @@ widget_doc.tgz
1010
temp
1111
test/lib/*
1212
tempImpl
13+
node_modules/

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CDN URL
22
---
3-
https://live.zwidgets.com/js-sdk/1.2/ZohoEmbededAppSDK.min.js
3+
https://live.zwidgets.com/js-sdk/1.5/ZohoEmbededAppSDK.min.js
44

55
To register Listeners with EmbededApp
66
--

build.gradle

Lines changed: 108 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -17,62 +17,122 @@ repositories {
1717
mavenCentral()
1818
}
1919
dependencies {
20-
compile group: 'org.webjars.bower', name: "$jasmin_jarName", version: "$jasmin_jarVersion"
21-
compile group: 'org.webjars', name: "$require_jarName", version: "$require_jarVersion"
20+
compile group: 'org.webjars.bower', name: "$jasmin_jarName", version: "$jasmin_jarVersion"
21+
compile group: 'org.webjars', name: "$require_jarName", version: "$require_jarVersion"
2222
}
2323

24-
task createJSSDK (type: MinifyJsTask) {
25-
source = fileTree('lib/'){
26-
include '**/ZSDK.js'
27-
include '**/ZohoCrmHelper.js'
28-
}
29-
dest = "${buildDir}/js/ZohoEmbededAppSDK.min.js"
30-
closure {
31-
warningLevel = 'QUIET'
32-
compilerOptions.languageIn = 'ECMASCRIPT5'
33-
}
24+
// 1. Transpile ZSDK to ES5 using Babel (legacy ie11 support)
25+
task transpileZSDK(type: Exec) {
26+
group = 'build'
27+
description = 'Transpile ZSDK.js to ES5'
28+
inputs.file 'lib/ZSDK.js'
29+
outputs.dir "$buildDir/es5"
30+
doFirst {
31+
file("$buildDir/es5").mkdirs()
32+
}
33+
commandLine 'npx', 'babel', 'lib/ZSDK.js', '--out-file', "$buildDir/es5/ZSDK.js"
3434
}
3535

36+
// 2. Transpile ESNext to target browsers using Babel (modern browsers targets, see .babelrc.modern.json)
37+
task transpileModernJsLibs(type: Exec) {
38+
group = 'build'
39+
description = 'Transpile modern JS libs with specific browser targets'
40+
inputs.files fileTree('lib/') {
41+
include '**/ZohoCrmHelper.js'
42+
}
43+
outputs.dir "$buildDir/es5"
44+
doFirst {
45+
file("$buildDir/es5").mkdirs()
46+
}
47+
commandLine 'npx', 'babel', 'lib/ZohoCrmHelper.js', '--out-file', "$buildDir/es5/ZohoCrmHelper.js", '--config-file', './.babelrc.modern.json'
48+
}
49+
50+
import java.nio.file.Files
51+
52+
// 3. Concatenate transpiled JS files in order
53+
task concatJs(dependsOn: [transpileZSDK, transpileModernJsLibs]) {
54+
group = 'build'
55+
description = 'Concatenate transpiled JS files in order'
56+
57+
def sources = [
58+
"$buildDir/es5/ZSDK.js",
59+
"$buildDir/es5/ZohoCrmHelper.js"
60+
// Add other files here in the correct order
61+
]
62+
def outputDir = file("$buildDir/concat")
63+
def outputFile = file("$outputDir/ZohoEmbededAppSDK.concat.js")
64+
65+
inputs.files sources.collect { file(it) }
66+
outputs.file outputFile
67+
68+
doLast {
69+
outputDir.mkdirs()
70+
outputFile.text = sources.collect { file(it).text }.join('\n')
71+
}
72+
}
73+
74+
// 4. Minify concatenated JS files
75+
task createJSSDK(type: MinifyJsTask, dependsOn: concatJs) {
76+
source = fileTree("$buildDir/concat") {
77+
include "ZohoEmbededAppSDK.concat.js"
78+
}
79+
dest = "${buildDir}/js/ZohoEmbededAppSDK.min.js"
80+
closure {
81+
warningLevel = 'QUIET'
82+
compilerOptions.languageIn = 'ECMASCRIPT5'
83+
}
84+
85+
doLast {
86+
// cleanup
87+
def concatDir = file("$buildDir/concat")
88+
def es5Dir = file("$buildDir/es5")
89+
if (concatDir.exists()) {
90+
Files.walk(concatDir.toPath()).sorted(Comparator.reverseOrder()).forEach { it.toFile().delete() }
91+
}
92+
if (es5Dir.exists()) {
93+
Files.walk(es5Dir.toPath()).sorted(Comparator.reverseOrder()).forEach { it.toFile().delete() }
94+
}
95+
}
96+
}
3697

3798
task downloadJar(type: Copy) {
38-
group 'dependentJS'
39-
description 'Download thirdparty js dependencies'
40-
41-
from configurations.runtime
42-
into "$tempDir"
99+
group 'dependentJS'
100+
description 'Download thirdparty js dependencies'
101+
from configurations.runtime
102+
into "$tempDir"
43103
}
44104

45105
task unzipJar(type: Copy , dependsOn:downloadJar) {
46-
group 'dependentJS'
47-
description 'Download thirdparty js dependencies'
48-
from(zipTree("$tempDir/$jasmin_jarName-$jasmin_jarVersion$extension"))
49-
{
50-
include "META-INF/resources/webjars/$jasmin_jarName/$jasmin_jarVersion/lib/jasmine-core/*"
51-
}
52-
from(zipTree("$tempDir/$require_jarName-$require_jarVersion$extension"))
53-
{
54-
include "META-INF/resources/webjars/$require_jarName/$require_jarVersion/require.min.js"
55-
}
56-
into "$tempDir"
106+
group 'dependentJS'
107+
description 'Download thirdparty js dependencies'
108+
from(zipTree("$tempDir/$jasmin_jarName-$jasmin_jarVersion$extension"))
109+
{
110+
include "META-INF/resources/webjars/$jasmin_jarName/$jasmin_jarVersion/lib/jasmine-core/*"
111+
}
112+
from(zipTree("$tempDir/$require_jarName-$require_jarVersion$extension"))
113+
{
114+
include "META-INF/resources/webjars/$require_jarName/$require_jarVersion/require.min.js"
115+
}
116+
into "$tempDir"
57117
}
58118

59-
task downloadDepJars( dependsOn:unzipJar){
60-
doLast
61-
{
62-
group 'dependentJS'
63-
description 'Download thirdparty js dependencies'
64-
copy{
65-
from("$tempDir/META-INF/resources/webjars/jasmine/$jasmin_jarVersion/lib/jasmine-core/") {
66-
include "*.js"
67-
include "*.css"
68-
}
69-
into "$testFolder/lib/jasmine"
70-
}
71-
copy{
72-
from("$tempDir/META-INF/resources/webjars/$require_jarName/$require_jarVersion/") {
73-
include "*.js"
74-
}
75-
into "$testFolder/lib/require"
76-
}
77-
}
78-
}
119+
task downloadDepJars(dependsOn:unzipJar){
120+
doLast
121+
{
122+
group 'dependentJS'
123+
description 'Download thirdparty js dependencies'
124+
copy{
125+
from("$tempDir/META-INF/resources/webjars/jasmine/$jasmin_jarVersion/lib/jasmine-core/") {
126+
include "*.js"
127+
include "*.css"
128+
}
129+
into "$testFolder/lib/jasmine"
130+
}
131+
copy{
132+
from("$tempDir/META-INF/resources/webjars/$require_jarName/$require_jarVersion/") {
133+
include "*.js"
134+
}
135+
into "$testFolder/lib/require"
136+
}
137+
}
138+
}

lib/$Client.js

Lines changed: 0 additions & 22 deletions
This file was deleted.

lib/ZDK.js

Lines changed: 0 additions & 28 deletions
This file was deleted.

lib/ZSDK.js

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -282,12 +282,13 @@ var ZSDKMessageManager = (function(ZSDKMessageManager) {
282282
return promise;
283283
}
284284

285-
function RegisterApp() {
285+
function RegisterApp(metaData) {
286286

287287
var registerSDKClient = {
288288
type: 'SDK.EVENT',
289289
eventName: 'REGISTER',
290-
appOrigin: encodeURIComponent(getCurrentURLPath())
290+
appOrigin: encodeURIComponent(getCurrentURLPath()),
291+
...metaData
291292
};
292293

293294
// Initiating the Client Handshake
@@ -297,7 +298,7 @@ var ZSDKMessageManager = (function(ZSDKMessageManager) {
297298
var deRegisterSDKClient = {
298299
type: 'SDK.EVENT',
299300
eventName: 'DEREGISTER',
300-
uniqueID : SDKContext.getUniqueID()
301+
uniqueID : SDKContext.getUniqueID(),
301302
};
302303

303304
PostMessage(deRegisterSDKClient);
@@ -384,7 +385,7 @@ var ZSDKEventManager = (function(ZSDKEventManager) {
384385
return ZSDKEventManager;
385386
})(window.ZSDKEventManager || {});
386387

387-
;function ZSDK() { // TODO: Replace console with Logger
388+
;function ZSDK(options) { // TODO: Replace console with Logger
388389

389390
/* Private variables */
390391
var that = this;
@@ -403,6 +404,8 @@ var ZSDKEventManager = (function(ZSDKEventManager) {
403404
var _isAppRegistered = false;
404405
var isOnLoadTriggered = false;
405406

407+
var registrationMeta = options.registrationMeta || {}; // registration meta data for the app.
408+
406409
/* Instance variables */
407410
this.isContextReady = false;
408411
this.HelperContext = {}; // Helper context for helper js files
@@ -454,6 +457,10 @@ var ZSDKEventManager = (function(ZSDKEventManager) {
454457
return _isAppRegistered;
455458
}
456459

460+
function getRegistrationMeta() {
461+
return registrationMeta;
462+
}
463+
457464
//TODO: Add support for Setting custom headers and other error handling cases.
458465
function GetRequest(options) {
459466
return ZSDKMessageManager.SendRequest(options);
@@ -464,7 +471,7 @@ var ZSDKEventManager = (function(ZSDKEventManager) {
464471
return ZSDKMessageManager.TriggerEvent(eventName, payload, isPromise);
465472
}
466473
function RegisterClient() {
467-
ZSDKMessageManager.RegisterApp();
474+
ZSDKMessageManager.RegisterApp(getRegistrationMeta());
468475
}
469476

470477
// LoadContext object

0 commit comments

Comments
 (0)