├── jaguarjs-jsdoc ├── .gitignore ├── tmpl │ ├── example.tmpl │ ├── type.tmpl │ ├── source.tmpl │ ├── mainpage.tmpl │ ├── tutorial.tmpl │ ├── examples.tmpl │ ├── exceptions.tmpl │ ├── members.tmpl │ ├── navigation.tmpl │ ├── details.tmpl │ ├── returns.tmpl │ ├── method.tmpl │ ├── properties.tmpl │ ├── params.tmpl │ ├── layout.tmpl │ └── container.tmpl ├── static │ ├── img │ │ └── favicon.ico │ ├── fonts │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.ttf │ │ └── glyphicons-halflings-regular.woff │ ├── scripts │ │ ├── prettify │ │ │ ├── lang-css.js │ │ │ ├── Apache-License-2.0.txt │ │ │ └── prettify.js │ │ ├── linenumber.js │ │ ├── main.js │ │ └── underscore-min.js │ └── styles │ │ ├── prettify-jsdoc.css │ │ ├── prettify-tomorrow.css │ │ └── jaguar.css ├── less │ ├── footer.less │ ├── common.less │ ├── jaguar.less │ ├── navigation.less │ └── main.less ├── conf.json ├── package.json ├── LICENSE ├── README.md └── Gruntfile.js ├── test ├── js │ ├── .DS_Store │ ├── v1 │ │ ├── TestFlowCustomButtonEdit.js │ │ ├── TestFlowCustomButtonView.js │ │ ├── TestFlowCustomButtonList.js │ │ ├── TestFlowRelatedList.js │ │ ├── TestFlowCustomButtonCreate.js │ │ ├── TestMobileWidget.js │ │ ├── ZohoEmbededAppSDK.min.js │ │ └── TestFlowWebTab.js │ ├── Promise.min.js │ └── v0.9.5 │ │ ├── TestFlowWebTab.js │ │ ├── Test.js │ │ └── ZohoEmbededAppSDK.min.js ├── README.txt └── html │ ├── include.html │ ├── Main.html │ ├── CompTest.html │ └── MultipleWindowTesting.html ├── .gitignore ├── conf.json ├── README.md └── LICENSE /jaguarjs-jsdoc/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | demo/dist/ -------------------------------------------------------------------------------- /test/js/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zoho/embeddedApp-js-sdk/HEAD/test/js/.DS_Store -------------------------------------------------------------------------------- /jaguarjs-jsdoc/tmpl/example.tmpl: -------------------------------------------------------------------------------- 1 | 2 |
3 | -------------------------------------------------------------------------------- /jaguarjs-jsdoc/static/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zoho/embeddedApp-js-sdk/HEAD/jaguarjs-jsdoc/static/img/favicon.ico -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .pmd 2 | .gradle/ 3 | .project 4 | build/ 5 | server/ 6 | out/ 7 | HelpDoc.zip 8 | server.zip 9 | temp 10 | test/lib/* 11 | tempImpl 12 | .DS_Store 13 | -------------------------------------------------------------------------------- /jaguarjs-jsdoc/static/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zoho/embeddedApp-js-sdk/HEAD/jaguarjs-jsdoc/static/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /jaguarjs-jsdoc/static/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zoho/embeddedApp-js-sdk/HEAD/jaguarjs-jsdoc/static/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /jaguarjs-jsdoc/static/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zoho/embeddedApp-js-sdk/HEAD/jaguarjs-jsdoc/static/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /jaguarjs-jsdoc/less/footer.less: -------------------------------------------------------------------------------- 1 | @import "common.less"; 2 | 3 | footer { 4 | margin: 15px 0; 5 | padding-top: 15px; 6 | border-top: 1px solid #e1e1e1; 7 | .font-description(); 8 | font-size: 0.8em; 9 | color: gray; 10 | } -------------------------------------------------------------------------------- /jaguarjs-jsdoc/tmpl/type.tmpl: -------------------------------------------------------------------------------- 1 | 5 | 6 | | 7 | -------------------------------------------------------------------------------- /jaguarjs-jsdoc/less/common.less: -------------------------------------------------------------------------------- 1 | @navWidth: 250px; 2 | @colorSubtitle: rgb(119, 156, 52); 3 | @colorRed: rgb(238, 125, 125); 4 | @colorLink: #2a6496; 5 | @colorBgNavi: #1a1a1a; 6 | 7 | .font-description () { 8 | font-family: "freight-text-pro",Georgia,Cambria,"Times New Roman",Times,serif 9 | } -------------------------------------------------------------------------------- /jaguarjs-jsdoc/tmpl/source.tmpl: -------------------------------------------------------------------------------- 1 | 4 |
5 |
6 |
7 |
8 |
9 | -------------------------------------------------------------------------------- /jaguarjs-jsdoc/tmpl/mainpage.tmpl: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 |

8 | 9 | 10 | 11 |
12 |
13 |
14 | -------------------------------------------------------------------------------- /jaguarjs-jsdoc/tmpl/tutorial.tmpl: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | 0) { ?> 5 | 10 | 11 | 12 |

13 |
14 | 15 |
16 | 17 |
18 | 19 |
20 | -------------------------------------------------------------------------------- /jaguarjs-jsdoc/less/jaguar.less: -------------------------------------------------------------------------------- 1 | @import "common.less"; 2 | 3 | // normalize 4 | html, body { 5 | font: 1em "jaf-bernino-sans","Lucida Grande","Lucida Sans Unicode","Lucida Sans",Geneva,Verdana,sans-serif; 6 | background-color: #fff; 7 | } 8 | ul, ol { 9 | margin: 0; 10 | padding: 0; 11 | } 12 | li { 13 | list-style-type: none; 14 | } 15 | 16 | #wrap { 17 | position: relative; 18 | } 19 | 20 | @import "navigation.less"; 21 | @import "main.less"; 22 | @import "footer.less"; -------------------------------------------------------------------------------- /conf.json: -------------------------------------------------------------------------------- 1 | { 2 | "tags": { 3 | "allowUnknownTags": true, 4 | "dictionaries": ["jsdoc","closure"] 5 | }, 6 | "source": { 7 | "include": ["lib"], 8 | "includePattern": ".+\\.js(doc|x)?$" 9 | }, 10 | "templates": { 11 | "cleverLinks": false, 12 | "monospaceLinks": false, 13 | "applicationName": "JS SDK", 14 | "sort": false, 15 | "meta": { 16 | "title": "ZOHO CRM SDK", 17 | "description":"JS SDK lib for ZOHO CRM" 18 | } 19 | }, 20 | "opts":{ 21 | "template":"jaguarjs-jsdoc/", 22 | "readme":"README.md", 23 | "sort": false 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /jaguarjs-jsdoc/tmpl/examples.tmpl: -------------------------------------------------------------------------------- 1 | 10 |

11 | 12 | 13 | ') === -1) { ?> 14 |
15 | 16 | /g, '
') ?>
17 |     
18 | 


--------------------------------------------------------------------------------
/jaguarjs-jsdoc/conf.json:
--------------------------------------------------------------------------------
 1 | {
 2 | 	"tags": {
 3 | 		"allowUnknownTags" : true
 4 | 	},
 5 | 	"plugins": ["plugins/markdown"],
 6 | 	"templates": {
 7 | 		"cleverLinks": true,
 8 | 		"monospaceLinks": true,
 9 | 		"default": {
10 | 			"outputSourceFiles" : true
11 | 		},
12 | 		"applicationName": "Demo",
13 | 		"disqus": "",
14 | 		"googleAnalytics": "",
15 | 		"openGraph": {
16 | 			"title": "",
17 | 			"type": "website",
18 | 			"image": "",
19 | 			"site_name": "",
20 | 			"url": ""
21 | 		},
22 | 		"meta": {
23 | 			"title": "",
24 | 			"description": "",
25 | 			"keyword": ""
26 | 		},
27 | 		"linenums": false
28 | 	},
29 | 	"markdown": {
30 | 		"parser": "gfm",
31 | 		"hardwrap": true,
32 | 		"tags": ["examples"]
33 | 	}
34 | }
35 | 


--------------------------------------------------------------------------------
/test/README.txt:
--------------------------------------------------------------------------------
 1 | Test Application endpoints.
 2 | 
 3 | WebTab
 4 | 
 5 | 	html/CompTest.html?type=WebTab
 6 | 
 7 | Custom Buttons
 8 | 
 9 | 	ListView 
10 | 		html/CompTest.html?type=CustomButtonList
11 | 	
12 | 	ListView Per Record
13 | 		html/CompTest.html?type=CustomButtonList
14 | 	
15 | 	Record View 
16 | 		html/CompTest.html?type=CustomButtonView
17 | 	
18 | 	Record Edit
19 | 		html/CompTest.html?type=CustomButtonEdit
20 | 	
21 | 	Record Create - populate 
22 | 		html/CompTest.html?type=CustomButtonCreate&action=populate
23 | 	
24 | 	Record Create - verify 
25 | 		html/CompTest.html?type=CustomButtonCreate&action=verify
26 | 
27 | 
28 | Related List
29 | 	
30 | 	html/CompTest.html?type=RelatedList
31 | 
32 | 
33 | 
34 | Mobile Testing
35 | 
36 | 	html/CompTest.html?type=MobileTestCases


--------------------------------------------------------------------------------
/jaguarjs-jsdoc/tmpl/exceptions.tmpl:
--------------------------------------------------------------------------------
 1 | 
 4 | 
 5 | 
6 |
7 |
8 | 9 |
10 |
11 |
12 |
13 |
14 | Type 15 |
16 |
17 | 18 |
19 |
20 |
21 |
22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 | -------------------------------------------------------------------------------- /test/js/v1/TestFlowCustomButtonEdit.js: -------------------------------------------------------------------------------- 1 | describe("SDK Testing", function() { 2 | beforeAll(function(done) 3 | { 4 | jasmine.DEFAULT_TIMEOUT_INTERVAL = 2000; 5 | ZOHO.embeddedApp.on("PageLoad",function(data){ 6 | console.log("------------------------------") 7 | console.log("on Load data") 8 | console.log("------------------------------") 9 | console.log(data) 10 | console.log("------------------------------") 11 | TestSpec.onLoadData = data 12 | done(); 13 | }) 14 | ZOHO.embeddedApp.init() 15 | }); 16 | afterAll(testCompleted); 17 | /* 18 | * Getch The Lead using the RecordID and verify its data 19 | */ 20 | it("EditPage", function(done) 21 | { 22 | var onloadData = TestSpec.onLoadData; 23 | TestCases.getRecord(onloadData.Entity,onloadData.EntityId,function(result){ 24 | expect(result).toBe(true); 25 | done(); 26 | }); 27 | }); 28 | }); 29 | -------------------------------------------------------------------------------- /jaguarjs-jsdoc/static/scripts/prettify/lang-css.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n "]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com", 2 | /^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]); 3 | -------------------------------------------------------------------------------- /test/js/v1/TestFlowCustomButtonView.js: -------------------------------------------------------------------------------- 1 | describe("SDK Testing", function() { 2 | beforeAll(function(done) 3 | { 4 | jasmine.DEFAULT_TIMEOUT_INTERVAL = 2000; 5 | ZOHO.embeddedApp.on("PageLoad",function(data){ 6 | console.log("------------------------------") 7 | console.log("on Load data") 8 | console.log("------------------------------") 9 | console.log(data) 10 | console.log("------------------------------") 11 | TestSpec.onLoadData = data 12 | done(); 13 | }) 14 | ZOHO.embeddedApp.init() 15 | }); 16 | afterAll(testCompleted); 17 | /* 18 | * Getch The Lead using the RecordID and verify its data 19 | */ 20 | it("get current Record Info", function(done) 21 | { 22 | var onloadData = TestSpec.onLoadData; 23 | TestCases.getMultipleRecord(onloadData.Entity,onloadData.EntityId,function(result){ 24 | expect(result).toBe(true); 25 | done(); 26 | }); 27 | }); 28 | }); 29 | -------------------------------------------------------------------------------- /test/js/v1/TestFlowCustomButtonList.js: -------------------------------------------------------------------------------- 1 | describe("SDK Testing", function() { 2 | beforeAll(function(done) 3 | { 4 | jasmine.DEFAULT_TIMEOUT_INTERVAL = 2000; 5 | ZOHO.embeddedApp.on("PageLoad",function(data){ 6 | console.log("------------------------------") 7 | console.log("on Load data") 8 | console.log("------------------------------") 9 | console.log(data) 10 | console.log("------------------------------") 11 | TestSpec.onLoadData = data; 12 | done(); 13 | }) 14 | ZOHO.embeddedApp.init() 15 | }); 16 | afterAll(testCompleted); 17 | /* 18 | * Getch The Lead using the RecordID and verify its data 19 | */ 20 | it("fetch info of Selected Records", function(done) 21 | { 22 | var onloadData = TestSpec.onLoadData; 23 | TestCases.getMultipleRecord(onloadData.Entity,onloadData.EntityId,function(result){ 24 | expect(result).toBe(true); 25 | done(); 26 | }); 27 | }); 28 | }); 29 | -------------------------------------------------------------------------------- /jaguarjs-jsdoc/static/scripts/linenumber.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | var counter = 0; 3 | var numbered; 4 | var source = document.getElementsByClassName('prettyprint source'); 5 | 6 | if (source && source[0]) { 7 | var linenums = config.linenums; 8 | 9 | if (linenums) { 10 | source = source[0].getElementsByTagName('ol')[0]; 11 | 12 | numbered = Array.prototype.slice.apply(source.children); 13 | numbered = numbered.map(function(item) { 14 | counter++; 15 | item.id = 'line' + counter; 16 | }); 17 | } else { 18 | source = source[0].getElementsByTagName('code')[0]; 19 | 20 | numbered = source.innerHTML.split('\n'); 21 | numbered = numbered.map(function(item) { 22 | counter++; 23 | return '' + item; 24 | }); 25 | 26 | source.innerHTML = numbered.join('\n'); 27 | } 28 | } 29 | })(); 30 | -------------------------------------------------------------------------------- /test/js/v1/TestFlowRelatedList.js: -------------------------------------------------------------------------------- 1 | describe("SDK Testing", function() { 2 | beforeAll(function(done) 3 | { 4 | jasmine.DEFAULT_TIMEOUT_INTERVAL = 2000; 5 | ZOHO.embeddedApp.on("PageLoad",function(data){ 6 | console.log("------------------------------") 7 | console.log("on Load data") 8 | console.log("------------------------------") 9 | console.log(data) 10 | console.log("------------------------------") 11 | TestSpec.onLoadData = data 12 | done(); 13 | }) 14 | ZOHO.embeddedApp.init() 15 | }); 16 | afterAll(testCompleted); 17 | /* 18 | * Getch The Lead using the RecordID and verify its data 19 | */ 20 | it("get Current Record Info", function(done) 21 | { 22 | var onloadData = TestSpec.onLoadData; 23 | TestCases.getRecord(onloadData.Entity,onloadData.EntityId,function(result){ 24 | expect(result).toBe(true); 25 | done(); 26 | }); 27 | }); 28 | /* 29 | * check resize 30 | */ 31 | it("UI resize", function(done) 32 | { 33 | TestCases.uiResize({width:100,height:200},function(result){ 34 | expect(result).toBe(true); 35 | done(); 36 | }); 37 | }); 38 | }); 39 | -------------------------------------------------------------------------------- /jaguarjs-jsdoc/tmpl/members.tmpl: -------------------------------------------------------------------------------- 1 | ' + self.linkto(name, self.htmlsafe(name)) + ' '; 9 | }); 10 | } 11 | ?> 12 |
13 |
14 |

15 |
16 | 17 | 18 |

19 | 20 |
21 |
22 | 23 |
24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Example 1? 's':'' ?>
32 | 33 | 34 |
35 | -------------------------------------------------------------------------------- /jaguarjs-jsdoc/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jaguarjs-jsdoc", 3 | "version": "0.0.1", 4 | "description": "Jaguar.js template for JSDoc 3", 5 | "main": "Gruntfile.js", 6 | "dependencies": { 7 | "taffydb": "^2.7.2", 8 | "underscore": "^1.7.0" 9 | }, 10 | "devDependencies": { 11 | "connect-livereload": "~0.3.2", 12 | "grunt": "~0.4.2", 13 | "grunt-contrib-clean": "~0.5.0", 14 | "grunt-contrib-copy": "~0.5.0", 15 | "grunt-contrib-less": "~0.9.0", 16 | "grunt-contrib-uglify": "~0.2.7", 17 | "grunt-contrib-watch": "~0.5.3", 18 | "grunt-jsdoc": "~0.5.1", 19 | "grunt-contrib-connect": "~0.6.0" 20 | }, 21 | "scripts": { 22 | "test": "echo \"Error: no test specified\" && exit 1" 23 | }, 24 | "repository": { 25 | "type": "git", 26 | "url": "git://github.com/davidshimjs/jaguarjs-jsdoc.git" 27 | }, 28 | "keywords": [ 29 | "jsdoc", 30 | "jsdoc3", 31 | "jaguar.js", 32 | "template" 33 | ], 34 | "author": "davidshimjs", 35 | "license": "MIT", 36 | "readmeFilename": "README.md", 37 | "bugs": { 38 | "url": "https://github.com/davidshimjs/jaguarjs-jsdoc/issues" 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /jaguarjs-jsdoc/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2013 Sangmin, Shim 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /test/js/v1/TestFlowCustomButtonCreate.js: -------------------------------------------------------------------------------- 1 | describe("SDK Testing", function() { 2 | beforeAll(function(done) 3 | { 4 | jasmine.DEFAULT_TIMEOUT_INTERVAL = 2000; 5 | ZOHO.embeddedApp.on("PageLoad",function(data){ 6 | console.log("------------------------------") 7 | console.log("on Load data") 8 | console.log("------------------------------") 9 | console.log(data) 10 | console.log("------------------------------") 11 | TestSpec.onLoadData = data 12 | done(); 13 | }) 14 | ZOHO.embeddedApp.init() 15 | }); 16 | afterAll(testCompleted); 17 | /* 18 | * Getch The Lead using the RecordID and verify its data 19 | */ 20 | it("Populate and verify form", function(done) 21 | { 22 | var url = new URL(window.location.href); 23 | var actionType = url.searchParams.get("action"); 24 | 25 | 26 | if(actionType === 'verify') 27 | { 28 | TestCases.validateForm(TestSpec.onLoadData,function(result){ 29 | expect(result).toBe(true); 30 | done(); 31 | }); 32 | } 33 | else if(actionType === 'populate') 34 | { 35 | TestCases.populate(TestSpec.recordData,function(result){ 36 | expect(result).toBe(true); 37 | done(); 38 | }); 39 | } 40 | }); 41 | }); 42 | -------------------------------------------------------------------------------- /test/html/include.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /jaguarjs-jsdoc/README.md: -------------------------------------------------------------------------------- 1 | Jaguar.js template for JSDoc 3 2 | --- 3 | - [Jaguar.js](http://davidshimjs.github.io/jaguarjs) 4 | - [Jaguar.js Documentations](http://davidshimjs.github.io/jaguarjs/doc) 5 | - [JSDoc3](https://github.com/jsdoc3/jsdoc) 6 | - [JSDoc3 API Documentations](http://usejsdoc.org) 7 | 8 | Usage 9 | --- 10 | 1. If you want to create documentations with sample files, you can use commands below. 11 | ``` 12 | $ npm install 13 | $ grunt demo 14 | ``` 15 | 16 | 2. You can see any output related jsdoc process with a `--debug` flag. 17 | ``` 18 | $ grunt demo --debug 19 | ``` 20 | 21 | 3. If you already have jsdoc system, you can use this project as jsdoc template. 22 | ``` 23 | $ jsdoc -t `project folder` -c `configuration file` `source files` `README.md file` 24 | ``` 25 | 26 | conf.json 27 | --- 28 | You can set options for customizing your documentations. 29 | 30 | ``` 31 | "templates": { 32 | "applicationName": "Demo", 33 | "disqus": "", 34 | "googleAnalytics": "", 35 | "openGraph": { 36 | "title": "", 37 | "type": "website", 38 | "image": "", 39 | "site_name": "", 40 | "url": "" 41 | }, 42 | "meta": { 43 | "title": "", 44 | "description": "", 45 | "keyword": "" 46 | }, 47 | "linenums": true 48 | } 49 | ``` 50 | 51 | License 52 | --- 53 | This project under the MIT License. and this project refered by default template for JSDoc 3. 54 | 55 | [![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/davidshimjs/jaguarjs-jsdoc/trend.png)](https://bitdeli.com/free "Bitdeli Badge") 56 | 57 | -------------------------------------------------------------------------------- /test/html/Main.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 43 | 44 | -------------------------------------------------------------------------------- /jaguarjs-jsdoc/static/styles/prettify-jsdoc.css: -------------------------------------------------------------------------------- 1 | /* JSDoc prettify.js theme */ 2 | 3 | /* plain text */ 4 | .pln { 5 | color: #000000; 6 | font-weight: normal; 7 | font-style: normal; 8 | } 9 | 10 | /* string content */ 11 | .str { 12 | color: #006400; 13 | font-weight: normal; 14 | font-style: normal; 15 | } 16 | 17 | /* a keyword */ 18 | .kwd { 19 | color: #000000; 20 | font-weight: bold; 21 | font-style: normal; 22 | } 23 | 24 | /* a comment */ 25 | .com { 26 | font-weight: normal; 27 | font-style: italic; 28 | } 29 | 30 | /* a type name */ 31 | .typ { 32 | color: #000000; 33 | font-weight: normal; 34 | font-style: normal; 35 | } 36 | 37 | /* a literal value */ 38 | .lit { 39 | color: #006400; 40 | font-weight: normal; 41 | font-style: normal; 42 | } 43 | 44 | /* punctuation */ 45 | .pun { 46 | color: #000000; 47 | font-weight: bold; 48 | font-style: normal; 49 | } 50 | 51 | /* lisp open bracket */ 52 | .opn { 53 | color: #000000; 54 | font-weight: bold; 55 | font-style: normal; 56 | } 57 | 58 | /* lisp close bracket */ 59 | .clo { 60 | color: #000000; 61 | font-weight: bold; 62 | font-style: normal; 63 | } 64 | 65 | /* a markup tag name */ 66 | .tag { 67 | color: #006400; 68 | font-weight: normal; 69 | font-style: normal; 70 | } 71 | 72 | /* a markup attribute name */ 73 | .atn { 74 | color: #006400; 75 | font-weight: normal; 76 | font-style: normal; 77 | } 78 | 79 | /* a markup attribute value */ 80 | .atv { 81 | color: #006400; 82 | font-weight: normal; 83 | font-style: normal; 84 | } 85 | 86 | /* a declaration */ 87 | .dec { 88 | color: #000000; 89 | font-weight: bold; 90 | font-style: normal; 91 | } 92 | 93 | /* a variable name */ 94 | .var { 95 | color: #000000; 96 | font-weight: normal; 97 | font-style: normal; 98 | } 99 | 100 | /* a function name */ 101 | .fun { 102 | color: #000000; 103 | font-weight: bold; 104 | font-style: normal; 105 | } 106 | 107 | /* Specify class=linenums on a pre to get line numbering */ 108 | ol.linenums { 109 | margin-top: 0; 110 | margin-bottom: 0; 111 | } 112 | -------------------------------------------------------------------------------- /test/js/Promise.min.js: -------------------------------------------------------------------------------- 1 | /*! promise-polyfill 3.1.0 */ 2 | !function(a){function b(a,b){return function(){a.apply(b,arguments)}}function c(a){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof a)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],i(a,b(e,this),b(f,this))}function d(a){var b=this;return null===this._state?void this._deferreds.push(a):void k(function(){var c=b._state?a.onFulfilled:a.onRejected;if(null===c)return void(b._state?a.resolve:a.reject)(b._value);var d;try{d=c(b._value)}catch(e){return void a.reject(e)}a.resolve(d)})}function e(a){try{if(a===this)throw new TypeError("A promise cannot be resolved with itself.");if(a&&("object"==typeof a||"function"==typeof a)){var c=a.then;if("function"==typeof c)return void i(b(c,a),b(e,this),b(f,this))}this._state=!0,this._value=a,g.call(this)}catch(d){f.call(this,d)}}function f(a){this._state=!1,this._value=a,g.call(this)}function g(){for(var a=0,b=this._deferreds.length;b>a;a++)d.call(this,this._deferreds[a]);this._deferreds=null}function h(a,b,c,d){this.onFulfilled="function"==typeof a?a:null,this.onRejected="function"==typeof b?b:null,this.resolve=c,this.reject=d}function i(a,b,c){var d=!1;try{a(function(a){d||(d=!0,b(a))},function(a){d||(d=!0,c(a))})}catch(e){if(d)return;d=!0,c(e)}}var j=setTimeout,k="function"==typeof setImmediate&&setImmediate||function(a){j(a,1)},l=Array.isArray||function(a){return"[object Array]"===Object.prototype.toString.call(a)};c.prototype["catch"]=function(a){return this.then(null,a)},c.prototype.then=function(a,b){var e=this;return new c(function(c,f){d.call(e,new h(a,b,c,f))})},c.all=function(){var a=Array.prototype.slice.call(1===arguments.length&&l(arguments[0])?arguments[0]:arguments);return new c(function(b,c){function d(f,g){try{if(g&&("object"==typeof g||"function"==typeof g)){var h=g.then;if("function"==typeof h)return void h.call(g,function(a){d(f,a)},c)}a[f]=g,0===--e&&b(a)}catch(i){c(i)}}if(0===a.length)return b([]);for(var e=a.length,f=0;fd;d++)a[d].then(b,c)})},c._setImmediateFn=function(a){k=a},"undefined"!=typeof module&&module.exports?module.exports=c:a.Promise||(a.Promise=c)}(this); -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | LICENSE 2 | --- 3 | Copyright (c) 2022, ZOHO CORPORATION PRIVATE LIMITED 4 | All rights reserved. 5 | 6 | Licensed under the Apache License, Version 2.0 (the "License"); 7 | you may not use this file except in compliance with the License. 8 | You may obtain a copy of the License at 9 | 10 | http://www.apache.org/licenses/LICENSE-2.0 11 | 12 | Unless required by applicable law or agreed to in writing, software 13 | distributed under the License is distributed on an "AS IS" BASIS, 14 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | See the License for the specific language governing permissions and 16 | limitations under the License. 17 | 18 | JS SDK lib 19 | --- 20 | https://github.com/ZohoDevelopers/embeddedApp-js-sdk/releases 21 | Latest Docs 22 | --- 23 | https://www.zohocrm.dev/explore/widgets/latest/jssdk 24 | To register Listeners with EmbededApp 25 | -- 26 | 27 | ZOHO.embeddedApp.on("DialerActive",function(){ 28 | console.log("Dialer Activated"); 29 | }) 30 | 31 | ZOHO.embeddedApp.on("Dial",function(data){ 32 | console.log("Number Dialed"); 33 | }) 34 | 35 | ZOHO.embeddedApp.on("PageLoad",function(data){ 36 | console.log(data); 37 | }) 38 | // Prints 39 | ----------------------------- 40 | RelatedList 41 | ----------------------------- 42 | { 43 | "Entity": "Leads", 44 | "EntityId": "3000000032096" 45 | } 46 | ----------------------------- 47 | Buttons 48 | ----------------------------- 49 | { 50 | "EntityId": [ 51 | "3000000040011", 52 | "3000000032101", 53 | "3000000032096", 54 | "3000000032091", 55 | "3000000032009" 56 | ], 57 | "Entity": "Leads", 58 | "ButtonPosition": "ListView" 59 | } 60 | 61 | Description 62 | -- 63 | DialerActive - Triggered everytime softphone window is toggled 64 | Dial - Triggered when Call icon inside ZohoCRM is clicked 65 | PageLoad - Triggered When ever an entity Page (Detail page) is loaded 66 | HistoryPopState - Triggered when browser back is invoked in WebTab Widget with custom widget params 67 | 68 | Example 69 | -- 70 | /* 71 | * Subscribe to the EmbeddedApp onPageLoad event before initializing 72 | */ 73 | 74 | ZOHO.embeddedApp.on("PageLoad",function(data) 75 | { 76 | console.log(data); 77 | //Custom Bussiness logic goes here 78 | }) 79 | 80 | ZOHO.embeddedApp.on("HistoryPopState",function(data){ 81 | console.log(data); 82 | 83 | // Custom business logic code goes here. 84 | }) 85 | 86 | /* 87 | * initializing the widget. 88 | */ 89 | ZOHO.embeddedApp.init(); 90 | -------------------------------------------------------------------------------- /jaguarjs-jsdoc/less/navigation.less: -------------------------------------------------------------------------------- 1 | @import "common.less"; 2 | 3 | ::-webkit-scrollbar { 4 | width: 8px; 5 | background-color: transparent; 6 | } 7 | 8 | ::-webkit-scrollbar-thumb { 9 | background-color: gray; 10 | border-radius: 4px; 11 | } 12 | 13 | .navigation { 14 | position: fixed; 15 | float: left; 16 | width: @navWidth; 17 | height: 100%; 18 | background-color: @colorBgNavi; 19 | 20 | .applicationName { 21 | margin: 0; 22 | margin-top: 15px; 23 | padding: 10px 15px; 24 | font: bold 1.25em Helvetica; 25 | color: #fff; 26 | 27 | a { 28 | color: #fff; 29 | } 30 | } 31 | 32 | .search { 33 | padding: 10px 15px; 34 | 35 | input { 36 | background-color: #333; 37 | color: #fff; 38 | border-color: #555; 39 | } 40 | } 41 | 42 | .list { 43 | padding: 10px 15px 0 15px; 44 | position: relative; 45 | overflow: auto; 46 | width: 100%; 47 | } 48 | 49 | li.item { 50 | margin-bottom: 8px; 51 | padding-bottom: 8px; 52 | border-bottom: 1px solid #333; 53 | 54 | a { 55 | color: #bbb; 56 | &:hover { 57 | color: #fff; 58 | } 59 | } 60 | .title { 61 | cursor: pointer; 62 | position: relative; 63 | a { 64 | color: #e1e1e1; 65 | &:hover { 66 | color: #fff; 67 | } 68 | } 69 | display: block; 70 | font-size: 0.8em; 71 | 72 | .static { 73 | display: block; 74 | border-radius: 3px; 75 | background-color: @colorSubtitle; 76 | color: #000; 77 | font-size: 0.7em; 78 | padding: 2px 4px; 79 | float: right; 80 | } 81 | } 82 | 83 | .subtitle { 84 | margin-top: 10px; 85 | font: bold 0.65em Helvetica; 86 | color: @colorSubtitle; 87 | display: block; 88 | } 89 | 90 | 91 | ul { 92 | & > li { 93 | font-size: 0.7em; 94 | padding-left: 8px; 95 | margin-top: 2px; 96 | } 97 | } 98 | 99 | .itemMembers { 100 | display: none; 101 | } 102 | } 103 | } -------------------------------------------------------------------------------- /jaguarjs-jsdoc/static/styles/prettify-tomorrow.css: -------------------------------------------------------------------------------- 1 | /* Tomorrow Theme */ 2 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */ 3 | /* Pretty printing styles. Used with prettify.js. */ 4 | /* SPAN elements with the classes below are added by prettyprint. */ 5 | /* plain text */ 6 | .pln { 7 | color: #4d4d4c; } 8 | 9 | @media screen { 10 | /* string content */ 11 | .str { 12 | color: #718c00; } 13 | 14 | /* a keyword */ 15 | .kwd { 16 | color: #8959a8; } 17 | 18 | /* a comment */ 19 | .com { 20 | color: #8e908c; } 21 | 22 | /* a type name */ 23 | .typ { 24 | color: #4271ae; } 25 | 26 | /* a literal value */ 27 | .lit { 28 | color: #f5871f; } 29 | 30 | /* punctuation */ 31 | .pun { 32 | color: #4d4d4c; } 33 | 34 | /* lisp open bracket */ 35 | .opn { 36 | color: #4d4d4c; } 37 | 38 | /* lisp close bracket */ 39 | .clo { 40 | color: #4d4d4c; } 41 | 42 | /* a markup tag name */ 43 | .tag { 44 | color: #c82829; } 45 | 46 | /* a markup attribute name */ 47 | .atn { 48 | color: #f5871f; } 49 | 50 | /* a markup attribute value */ 51 | .atv { 52 | color: #3e999f; } 53 | 54 | /* a declaration */ 55 | .dec { 56 | color: #f5871f; } 57 | 58 | /* a variable name */ 59 | .var { 60 | color: #c82829; } 61 | 62 | /* a function name */ 63 | .fun { 64 | color: #4271ae; } } 65 | /* Use higher contrast and text-weight for printable form. */ 66 | @media print, projection { 67 | .str { 68 | color: #060; } 69 | 70 | .kwd { 71 | color: #006; 72 | font-weight: bold; } 73 | 74 | .com { 75 | color: #600; 76 | font-style: italic; } 77 | 78 | .typ { 79 | color: #404; 80 | font-weight: bold; } 81 | 82 | .lit { 83 | color: #044; } 84 | 85 | .pun, .opn, .clo { 86 | color: #440; } 87 | 88 | .tag { 89 | color: #006; 90 | font-weight: bold; } 91 | 92 | .atn { 93 | color: #404; } 94 | 95 | .atv { 96 | color: #060; } } 97 | /* Style */ 98 | /* 99 | pre.prettyprint { 100 | background: white; 101 | font-family: Menlo, Monaco, Consolas, monospace; 102 | font-size: 12px; 103 | line-height: 1.5; 104 | border: 1px solid #ccc; 105 | padding: 10px; } 106 | */ 107 | 108 | /* Specify class=linenums on a pre to get line numbering */ 109 | ol.linenums { 110 | margin-top: 0; 111 | margin-bottom: 0; } 112 | 113 | /* IE indents via margin-left */ 114 | li.L0, 115 | li.L1, 116 | li.L2, 117 | li.L3, 118 | li.L4, 119 | li.L5, 120 | li.L6, 121 | li.L7, 122 | li.L8, 123 | li.L9 { 124 | /* */ } 125 | 126 | /* Alternate shading for lines */ 127 | li.L1, 128 | li.L3, 129 | li.L5, 130 | li.L7, 131 | li.L9 { 132 | /* */ } 133 | -------------------------------------------------------------------------------- /jaguarjs-jsdoc/tmpl/navigation.tmpl: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /jaguarjs-jsdoc/tmpl/details.tmpl: -------------------------------------------------------------------------------- 1 | 5 |
6 | 10 | 11 |
Properties:
12 | 13 |
14 | 15 | 16 | 17 | 18 |
Version:
19 |
20 | 21 | 22 | 23 |
Since:
24 |
25 | 26 | 27 | 28 |
Deprecated
  • Yes
    32 | 33 | 34 | 35 |
    Author:
    36 |
    37 |
      38 |
    • 39 |
    40 |
    41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 |
    License:
    50 |
    51 | 52 | 53 | 54 |
    Default Value:
    55 |
    56 | 57 | 58 | 59 |
    Tutorials:
    60 |
    61 |
      62 |
    • 63 |
    64 |
    65 | 66 | 67 | 68 |
    See:
    69 |
    70 |
      71 |
    • 72 |
    73 |
    74 | 75 | 76 | 77 |
    TODO
    78 |
    79 |
      80 |
    • 81 |
    82 |
    83 | 84 |
    85 | -------------------------------------------------------------------------------- /jaguarjs-jsdoc/tmpl/returns.tmpl: -------------------------------------------------------------------------------- 1 | /g, ''); 10 | 11 | var isNamed = ret.name ? true : false; 12 | var name = ret.name || ret.description; 13 | var startSpacePos = name.indexOf(' '); 14 | 15 | if (parentReturn !== null && name.indexOf(parentReturn.name + '.') === 0) { 16 | ret.name = isNamed ? name.substr(parentReturn.name.length + 1) : name.substr(parentReturn.name.length + 1, startSpacePos - (parentReturn.name.length + 1)); 17 | 18 | if (!isNamed) { 19 | ret.description = ret.description.substr(startSpacePos + 1); 20 | } 21 | 22 | ret.isSubReturns = true; 23 | parentReturn.subReturns = parentReturn.subReturns || []; 24 | parentReturn.subReturns.push(ret); 25 | returns[i] = null; 26 | } else if (returns.length > 1 || ret.isSubReturns) { 27 | if (!isNamed) { 28 | ret.name = ret.description.substr(0, startSpacePos !== -1 ? startSpacePos : ret.description.length); 29 | ret.description = startSpacePos !== -1 ? ret.description.substr(startSpacePos + 1) : ''; 30 | } 31 | 32 | parentReturn = ret; 33 | } 34 | } 35 | 36 | if (ret.name) { 37 | hasName = true; 38 | } 39 | 40 | if (ret.type) { 41 | hasType = true; 42 | } 43 | }); 44 | ?> 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 63 | 64 | 65 | 75 | 78 | 79 | 80 | 81 |
    NameTypeDescription
    66 | 69 | 70 | | 71 | 74 | 76 | 77 |
    82 | 83 | 84 | 85 | 86 | -------------------------------------------------------------------------------- /jaguarjs-jsdoc/tmpl/method.tmpl: -------------------------------------------------------------------------------- 1 | 5 |
    6 |
    7 |

    8 | 9 | 10 | 11 | 12 |

    13 | 14 | 21 |
    22 | 23 | 24 |

    25 | 26 |
    27 |
    28 | 29 | 30 |
    31 | 32 |
    33 | 34 | 35 | 36 |
    Type:
    37 |
      38 |
    • 39 | 40 |
    • 41 |
    42 | 43 | 44 | 45 |
    This:
    46 |
    47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 |
    Fires:
    57 |
      58 |
    • 59 |
    60 | 61 | 62 | 63 |
    Listens to Events:
    64 |
      65 |
    • 66 |
    67 | 68 | 69 | 70 |
    Listeners of This Event:
    71 |
      72 |
    • 73 |
    74 | 75 | 76 | 77 |
    Throws:
    78 | 1) { ?>
      80 |
    • 81 |
    84 | 85 | 87 | 88 | 89 |
    Returns:
    90 | 91 | 92 | 93 | 94 |
    Example 1? 's':'' ?>
    95 | 96 | 97 |
    98 | -------------------------------------------------------------------------------- /jaguarjs-jsdoc/tmpl/properties.tmpl: -------------------------------------------------------------------------------- 1 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 79 | 80 | 81 | 90 | 91 | 92 | 93 | 98 | 99 | 100 | 103 | 104 | 105 | 106 | 107 |
    NameTypeArgumentDefaultDescription
    75 | 76 | 77 | 78 | 82 | 83 | <optional>
    84 | 85 | 86 | 87 | <nullable>
    88 | 89 |
    94 | 95 | 96 | 97 | 101 |
    Properties
    102 |
    -------------------------------------------------------------------------------- /jaguarjs-jsdoc/tmpl/params.tmpl: -------------------------------------------------------------------------------- 1 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 75 | 76 | 77 | 82 | 83 | 84 | 100 | 101 | 102 | 103 | 104 |
    NameTypeDefaultDescription
    71 | 72 | 73 | 74 | 78 | 79 | 80 | 81 | 85 | 86 | 87 | optional 88 | 89 | 90 | nullable 91 | 92 | 93 | 94 | repeatable 95 | 96 | 97 | 98 | 99 |
    -------------------------------------------------------------------------------- /jaguarjs-jsdoc/tmpl/layout.tmpl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | <?js= ((env.conf.templates.meta && env.conf.templates.meta.title) || title) ?> 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 36 | 37 | 38 | 39 | 50 | 51 | 52 | 53 |
    54 | 55 |
    56 |

    57 | 58 | 59 | 60 | 61 |
    62 | 63 | comments powered by Disqus 64 | 65 | 66 | 71 |
    72 |
    73 | 74 | 75 | 76 | 77 | 78 | -------------------------------------------------------------------------------- /jaguarjs-jsdoc/static/scripts/main.js: -------------------------------------------------------------------------------- 1 | $(function () { 2 | // Search Items 3 | $('#search').on('keyup', function (e) { 4 | var value = $(this).val(); 5 | var $el = $('.navigation'); 6 | 7 | if (value) { 8 | var regexp = new RegExp(value, 'i'); 9 | $el.find('li, .itemMembers').hide(); 10 | 11 | $el.find('li').each(function (i, v) { 12 | var $item = $(v); 13 | 14 | if ($item.data('name') && regexp.test($item.data('name'))) { 15 | $item.show(); 16 | $item.closest('.itemMembers').show(); 17 | $item.closest('.item').show(); 18 | } 19 | }); 20 | } else { 21 | $el.find('.item, .itemMembers').show(); 22 | } 23 | 24 | $el.find('.list').scrollTop(0); 25 | }); 26 | 27 | // Toggle when click an item element 28 | $('.navigation').on('click', '.title', function (e) { 29 | $('.itemMembers').stop().slideUp(); 30 | $(this).parent().find('.itemMembers').stop().slideDown(); 31 | }); 32 | 33 | // Show an item related a current documentation automatically 34 | var filename = $('.page-title').data('filename').replace(/\.[a-z]+$/, ''); 35 | var $currentItem = $('.navigation .item[data-name*="' + filename + '"]:eq(0)'); 36 | 37 | if ($currentItem.length) { 38 | $currentItem 39 | // .remove() 40 | // .prependTo('.navigation .list') 41 | .show() 42 | .find('.itemMembers') 43 | .show(); 44 | } 45 | 46 | // Auto resizing on navigation 47 | var _onResize = function () { 48 | var height = $(window).height(); 49 | var $el = $('.navigation'); 50 | 51 | $el.height(height).find('.list').height(height - 133); 52 | }; 53 | 54 | $(window).on('resize', _onResize); 55 | _onResize(); 56 | 57 | // disqus code 58 | if (config.disqus) { 59 | $(window).on('load', function () { 60 | var disqus_shortname = config.disqus; // required: replace example with your forum shortname 61 | var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; 62 | dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js'; 63 | (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); 64 | var s = document.createElement('script'); s.async = true; 65 | s.type = 'text/javascript'; 66 | s.src = 'http://' + disqus_shortname + '.disqus.com/count.js'; 67 | document.getElementsByTagName('BODY')[0].appendChild(s); 68 | }); 69 | } 70 | }); 71 | $(document).ready(function(){ 72 | $('a').bind('click', function(e) { 73 | var url = $(this).attr('href'); 74 | $('div.main').load(url+" .main>",function(){ 75 | window.prettyPrint(); 76 | var hasTag = url.split("#"); 77 | if(hasTag.length == 2 ){ 78 | $('html, body').animate({ 79 | scrollTop: $("#\\"+hasTag[1]).offset().top 80 | }, 500); 81 | }else { 82 | $('html, body').animate({ 83 | scrollTop: $(".main").offset().top 84 | }, 10); 85 | } 86 | }); 87 | if(url!=window.location){ 88 | window.history.pushState({path:url},'',url); 89 | } 90 | e.preventDefault(); 91 | }); 92 | 93 | 94 | 95 | }); 96 | 97 | $(window).load(function(e) { 98 | var url = location.href; 99 | $('div.main').load(url+" .main>",function(){ 100 | window.prettyPrint(); 101 | }); 102 | if(url!=window.location){ 103 | window.history.pushState({path:url},'',url); 104 | } 105 | e.preventDefault(); 106 | }); -------------------------------------------------------------------------------- /jaguarjs-jsdoc/Gruntfile.js: -------------------------------------------------------------------------------- 1 | /** 2 | * http://gruntjs.com/configuring-tasks 3 | */ 4 | module.exports = function (grunt) { 5 | var path = require('path'); 6 | var DEMO_PATH = 'demo/dist'; 7 | var DEMO_SAMPLE_PATH = 'demo/sample'; 8 | 9 | grunt.initConfig({ 10 | pkg: grunt.file.readJSON('package.json'), 11 | 12 | connect: { 13 | options: { 14 | hostname: '*' 15 | }, 16 | demo: { 17 | options: { 18 | port: 8000, 19 | base: DEMO_PATH, 20 | middleware: function (connect, options) { 21 | return [ 22 | require('connect-livereload')(), 23 | connect.static(path.resolve(options.base)) 24 | ]; 25 | } 26 | } 27 | } 28 | }, 29 | 30 | watch: { 31 | options: { 32 | livereload: true 33 | }, 34 | less: { 35 | files: ['less/**/*.less'], 36 | tasks: ['less'] 37 | }, 38 | 39 | lesscopy: { 40 | files: ['static/styles/jaguar.css'], 41 | tasks: ['copy:css'] 42 | }, 43 | 44 | jscopy: { 45 | files: ['static/scripts/main.js'], 46 | tasks: ['copy:js'] 47 | }, 48 | 49 | imgcopy: { 50 | files: ['static/img/favicon.ico'], 51 | tasks: ['copy:img'] 52 | }, 53 | 54 | jsdoc: { 55 | files: ['**/*.tmpl', '*.js'], 56 | tasks: ['jsdoc'] 57 | }, 58 | 59 | demo: { 60 | files: ['demo/sample/**/*.js'], 61 | tasks: ['demo'] 62 | } 63 | }, 64 | 65 | clean: { 66 | demo: { 67 | src: DEMO_PATH 68 | } 69 | }, 70 | 71 | jsdoc: { 72 | demo: { 73 | src: [ 74 | DEMO_SAMPLE_PATH + '/**/*.js', 75 | 76 | // You can add README.md file for index page at documentations. 77 | 'README.md' 78 | ], 79 | options: { 80 | verbose: true, 81 | destination: DEMO_PATH, 82 | configure: 'conf.json', 83 | template: './', 84 | 'private': false 85 | } 86 | } 87 | }, 88 | 89 | less: { 90 | dist: { 91 | src: 'less/**/jaguar.less', 92 | dest: 'static/styles/jaguar.css' 93 | } 94 | }, 95 | 96 | copy: { 97 | css: { 98 | src: 'static/styles/jaguar.css', 99 | dest: DEMO_PATH + '/styles/jaguar.css' 100 | }, 101 | 102 | js: { 103 | src: 'static/scripts/main.js', 104 | dest: DEMO_PATH + '/scripts/main.js' 105 | }, 106 | img: { 107 | src: 'static/img/favicon.ico', 108 | dest: DEMO_PATH + 'main.js' 109 | } 110 | 111 | } 112 | }); 113 | 114 | // Load task libraries 115 | [ 116 | 'grunt-contrib-connect', 117 | 'grunt-contrib-watch', 118 | 'grunt-contrib-copy', 119 | 'grunt-contrib-clean', 120 | 'grunt-contrib-less', 121 | 'grunt-jsdoc', 122 | ].forEach(function (taskName) { 123 | grunt.loadNpmTasks(taskName); 124 | }); 125 | 126 | // Definitions of tasks 127 | grunt.registerTask('default', 'Watch project files', [ 128 | 'demo', 129 | 'connect:demo', 130 | 'watch' 131 | ]); 132 | 133 | grunt.registerTask('demo', 'Create documentations for demo', [ 134 | 'less', 135 | 'clean:demo', 136 | 'jsdoc:demo' 137 | ]); 138 | }; 139 | -------------------------------------------------------------------------------- /test/js/v0.9.5/TestFlowWebTab.js: -------------------------------------------------------------------------------- 1 | describe("SDK Testing", function() { 2 | var TestSpec={ 3 | recordID:undefined, 4 | recordData : { 5 | "Company": "Zylker", 6 | "Last_Name": "Peterson" 7 | }, 8 | userID:undefined, 9 | orgVariable:"unittest0.token", 10 | url: "http://mockbin.org/bin/9b6c1e8a-ebf8-4fc8-a729-46175eb2c05c", 11 | connector:"unittest0.unittest.getfiles", 12 | fileId : "0B-EvY2Wt1MdxM1NxQjRxcG9GbXc", 13 | connectorFile : "unittest0.unittest.getfile" 14 | }; 15 | beforeAll(function(done) 16 | { 17 | jasmine.DEFAULT_TIMEOUT_INTERVAL = 2000; 18 | ZOHO.embeddedApp.on("DialerActive",function(data){ 19 | console.log("----------------------"); 20 | console.log("Dialer Activated"); 21 | console.log(data); 22 | console.log("----------------------"); 23 | }) 24 | ZOHO.embeddedApp.on("PageLoad",function(data){ 25 | console.log("----------------------"); 26 | console.log("PageLoaded"); 27 | console.log(data); 28 | console.log("----------------------"); 29 | }) 30 | ZOHO.embeddedApp.on("Dial",function(number){ 31 | console.log("----------------------"); 32 | console.log("Number Dialed"); 33 | console.log(number); 34 | console.log("----------------------"); 35 | }) 36 | ZOHO.embeddedApp.init() 37 | .then(function() 38 | { 39 | done(); 40 | }); 41 | }); 42 | 43 | /* 44 | * Insert a new Record into the system 45 | */ 46 | it("Insert Lead", function(done) 47 | { 48 | TestCases.insertRecord("Leads",TestSpec.recordData,function(result,recordID){ 49 | TestSpec.recordID = recordID; 50 | expect(result).toBe(true); 51 | done(); 52 | }); 53 | }); 54 | /* 55 | * Getch The Lead using the RecordID and verify its data 56 | */ 57 | it("verify inserted Lead", function(done) 58 | { 59 | TestCases.verifyRecord("Leads",TestSpec.recordID,TestSpec.recordData,function(result){ 60 | expect(result).toBe(true); 61 | done(); 62 | }); 63 | }); 64 | 65 | 66 | it("getAll with Data", function(done) 67 | { 68 | TestCases.getAllRecord(function(result){ 69 | expect(result).toBe(true); 70 | done(); 71 | }); 72 | }); 73 | it("Delete Lead", function(done) 74 | { 75 | TestCases.deleteRecord("Leads",TestSpec.recordID,function(result){ 76 | expect(result).toBe(true); 77 | done(); 78 | }); 79 | }); 80 | it("getAll Users", function(done) 81 | { 82 | TestCases.getUser(undefined,function(result,userID){ 83 | TestSpec.userID = userID; 84 | expect(result).toBe(true); 85 | done(); 86 | }); 87 | }); 88 | it("getUserByID", function(done) 89 | { 90 | if(!TestSpec.userID){ 91 | expect(true).toBe(false); 92 | } 93 | else 94 | { 95 | TestCases.getUser(TestSpec.userID,function(result){ 96 | expect(result).toBe(true); 97 | done(); 98 | }); 99 | } 100 | 101 | }); 102 | it("getOrgVariable",function(done){ 103 | TestCases.getOrgVariable(TestSpec.orgVariable,function(result){ 104 | expect(result).toBe(true); 105 | done(); 106 | }); 107 | }); 108 | it("checkHtttpRequst",function(done){ 109 | TestCases.checkHttpRequest(TestSpec.url,function(result){ 110 | expect(result).toBe(true); 111 | done(); 112 | }); 113 | }); 114 | it("getFields",function(done){ 115 | TestCases.getFields("Leads",function(result){ 116 | expect(result).toBe(true); 117 | done(); 118 | }); 119 | }); 120 | it("getModules",function(done){ 121 | TestCases.getModules("Leads",function(result){ 122 | expect(result).toBe(true); 123 | done(); 124 | }); 125 | }); 126 | it("getAssignmentRules",function(done){ 127 | TestCases.getAssignmentRules("Leads",function(result){ 128 | expect(result).toBe(true); 129 | done(); 130 | }); 131 | }); 132 | it("getCurrentUser",function(done){ 133 | TestCases.getCurrentUser(function(result){ 134 | expect(result).toBe(true); 135 | done(); 136 | }); 137 | }); 138 | it("getOrgInfo",function(done){ 139 | TestCases.getOrgInfo(function(result){ 140 | expect(result).toBe(true); 141 | done(); 142 | }) 143 | }); 144 | it("searchRecord",function(done){ 145 | TestCases.Search("Leads","email","uk@gmail.com",function(result){ 146 | expect(result).toBe(true); 147 | done(); 148 | }); 149 | }); 150 | it("invokeConnectorWithoutDynamic",function(done){ 151 | TestCases.invokeConnectorWithoutDynamic(TestSpec.connector,{},function(result){ 152 | expect(result).toBe(true); 153 | done(); 154 | }); 155 | }); 156 | it("invokeConnectorWithoutDynamicValue",function(done){ 157 | TestCases.invokeConnectorwithDynamic(TestSpec.connectorFile,{fileId:TestSpec.fileId},function(result){ 158 | expect(result).toBe(true); 159 | done(); 160 | }); 161 | }); 162 | }); 163 | -------------------------------------------------------------------------------- /test/js/v0.9.5/Test.js: -------------------------------------------------------------------------------- 1 | const TestCases ={}; 2 | 3 | TestCases.getAllRecord = function(callBack) 4 | { 5 | ZOHO.CRM.API.getAllRecords({Entity:"Leads"}) 6 | .then(function(data){ 7 | if(data && typeof(data) === 'object' && data instanceof Array ) 8 | { 9 | callBack(true); 10 | } 11 | else 12 | { 13 | callBack(false); 14 | } 15 | }) 16 | }; 17 | TestCases.insertRecord=function(module,recordData,callBack) 18 | { 19 | ZOHO.CRM.API.insertRecord({Entity:module,APIData:recordData}) 20 | .then(function(data){ 21 | if(data && typeof(data) === 'object' && data[0] && data[0].code==='SUCCESS'){ 22 | leadID = data[0].details.id; 23 | callBack(true,leadID); 24 | } 25 | else 26 | { 27 | callBack(false); 28 | } 29 | }) 30 | }; 31 | TestCases.deleteRecord=function(module,recordID,callBack){ 32 | if(!recordID){ 33 | callBack(false); 34 | } 35 | else{ 36 | 37 | ZOHO.CRM.API.deleteRecord({Entity:module,RecordID: recordID}) 38 | .then(function(data){ 39 | if(data && typeof(data) === 'object' && data[0] && data[0].code==='SUCCESS'){ 40 | callBack(true); 41 | } 42 | else 43 | { 44 | callBack(false); 45 | } 46 | }) 47 | } 48 | 49 | }; 50 | TestCases.verifyRecord = function(module,recordID,recordData,callBack){ 51 | if(!recordID){ 52 | callBack(false); 53 | } 54 | else{ 55 | ZOHO.CRM.API.getRecord({Entity:module,RecordID:recordID}) 56 | .then(function(data){ 57 | if(data && typeof(data) === 'object' ) 58 | { 59 | for(field in recordData){ 60 | 61 | if(recordData[field] == data[field]){ 62 | continue 63 | } 64 | callBack(false); 65 | } 66 | callBack(true); 67 | } 68 | else{ 69 | callBack(false); 70 | } 71 | 72 | }) 73 | } 74 | }; 75 | TestCases.getUser = function(userID,callBack){ 76 | if(!userID) 77 | { 78 | ZOHO.CRM.API.getAllUsers({Type:"AllUsers"}) 79 | .then(function(data){ 80 | if(data && data.length && data.length > 0 ){ 81 | callBack(true,data[0].id); 82 | } 83 | else{ 84 | callBack(false); 85 | } 86 | }); 87 | } 88 | else 89 | { 90 | ZOHO.CRM.API.getUser({ID:userID}) 91 | .then(function(data){ 92 | if(data && data.id == userID){ 93 | callBack(true); 94 | } 95 | else 96 | { 97 | callBack(false); 98 | } 99 | }) 100 | } 101 | }; 102 | TestCases.getOrgVariable = function(variableName,callBack) 103 | { 104 | ZOHO.CRM.CONFIG.getOrgVariable(variableName).then(function(data){ 105 | if(data || data.Success || data.Error) 106 | { 107 | callBack(true); 108 | } 109 | else 110 | { 111 | callBack(false); 112 | } 113 | }); 114 | } 115 | TestCases.checkHttpRequest = function(url,callBack){ 116 | var request ={ 117 | url : url 118 | } 119 | ZOHO.CRM.HTTP.get(request).then(function(httpData){ 120 | var httpData = httpData; 121 | ZOHO.CRM.HTTP.get(request).then(function(httpsData){ 122 | var httpsData = httpsData; 123 | if(httpData && httpsData) 124 | { 125 | callBack(true); 126 | } 127 | else 128 | { 129 | callBack(false) 130 | } 131 | }); 132 | }); 133 | } 134 | TestCases.getFields = function(module,callBack){ 135 | ZOHO.CRM.META.API.getFields({Entity:module}).then(function(result){ 136 | if(result) 137 | { 138 | callBack(true); 139 | } 140 | else 141 | { 142 | callBack(false); 143 | } 144 | }); 145 | } 146 | TestCases.getModules = function(module,callBack){ 147 | ZOHO.CRM.META.API.getModules({Entity:module}).then(function(result){ 148 | if(result) 149 | { 150 | callBack(true); 151 | } 152 | else 153 | { 154 | callBack(false); 155 | } 156 | }); 157 | } 158 | TestCases.getAssignmentRules = function(module,callBack){ 159 | ZOHO.CRM.META.API.getAssignmentRules({Entity:module}).then(function(data){ 160 | if(data) 161 | { 162 | callBack(true); 163 | } 164 | else 165 | { 166 | callBack(false); 167 | } 168 | }); 169 | } 170 | TestCases.getCurrentUser = function(callBack){ 171 | ZOHO.CRM.CONFIG.getCurrentUser().then(function(data){ 172 | if(data) 173 | { 174 | callBack(true); 175 | } 176 | else 177 | { 178 | callBack(false); 179 | } 180 | }); 181 | } 182 | TestCases.getOrgInfo = function(callBack) 183 | { 184 | ZOHO.CRM.CONFIG.getOrgInfo().then(function(data){ 185 | if(data) 186 | { 187 | callBack(true); 188 | } 189 | else 190 | { 191 | callBack(false); 192 | } 193 | }); 194 | } 195 | TestCases.Search = function(module,type,query,callBack){ 196 | ZOHO.CRM.API.searchRecord({Entity:module,Type:type,Query:query}) 197 | .then(function(data){ 198 | if(data) 199 | { 200 | callBack(true); 201 | } 202 | else 203 | { 204 | callBack(false); 205 | } 206 | }) 207 | } 208 | TestCases.invokeConnectorWithoutDynamic = function(apiname,data,callBack){ 209 | ZOHO.CRM.CONNECTOR.invokeAPI(apiname,{}) 210 | .then(function(data){ 211 | if(data) 212 | { 213 | callBack(true); 214 | } 215 | else 216 | { 217 | callBack(false); 218 | } 219 | }); 220 | } 221 | TestCases.invokeConnectorwithDynamic = function(apiname,data,callBack){ 222 | ZOHO.CRM.CONNECTOR.invokeAPI(apiname,data) 223 | .then(function(data){ 224 | if(data) 225 | { 226 | callBack(true); 227 | } 228 | else 229 | { 230 | callBack(false); 231 | } 232 | }); 233 | } -------------------------------------------------------------------------------- /jaguarjs-jsdoc/tmpl/container.tmpl: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
    13 | 14 |
    15 |

    16 | 17 | 18 | 19 | 20 | 21 |

    22 | 23 |
    24 | 25 |
    26 | 27 |
    28 |
    29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 |
    38 | 39 | 40 | 41 | 42 | 43 |

    Example 1? 's':'' ?>

    44 | 45 | 46 | 47 |
    48 | 49 | 50 |

    Extends

    51 | 52 |
      53 |
    • 54 |
    55 | 56 | 57 | 58 |

    Mixes In

    59 | 60 |
      61 |
    • 62 |
    63 | 64 | 65 | 66 |

    Requires

    67 | 68 |
      69 |
    • 70 |
    71 | 72 | 73 | 77 |

    Classes

    78 | 79 |
    80 |
    81 |
    82 |
    83 | 84 | 85 | 89 |

    Namespaces

    90 | 91 |
    92 |
    93 |
    94 |
    95 | 96 | 97 | 101 |

    Members

    102 | 103 |
    104 | 105 |
    106 | 107 | 108 | 112 |

    Methods

    113 | 114 |
    115 | 116 |
    117 | 118 | 119 | 123 |

    Type Definitions

    124 | 125 |
    128 | 129 | 133 | 134 |
    137 | 138 | 139 | 143 |

    Events

    144 | 145 |
    146 | 147 |
    148 | 149 |
    150 | 151 |
    152 | 153 | 154 | 155 | -------------------------------------------------------------------------------- /jaguarjs-jsdoc/less/main.less: -------------------------------------------------------------------------------- 1 | @import "common.less"; 2 | 3 | .main { 4 | padding: 20px 20px; 5 | margin-left: @navWidth; 6 | .page-title { 7 | display: none; 8 | } 9 | 10 | h1 { 11 | font-weight: bold; 12 | font-size: 1.6em; 13 | margin: 0; 14 | } 15 | 16 | h2 { 17 | font-weight: bold; 18 | font-size: 1.5em; 19 | margin: 0; 20 | } 21 | 22 | h3 { 23 | font-weight: bold; 24 | font-size: 12px; 25 | margin: 5px 0; 26 | } 27 | 28 | h4 { 29 | font-weight: bold; 30 | font-size: 1em; 31 | } 32 | 33 | h5 { 34 | font-weight: bold; 35 | font-size: 12px; 36 | } 37 | 38 | dd { 39 | font-size: 12px; 40 | } 41 | 42 | h4.name { 43 | span.type-signature { 44 | display: inline-block; 45 | border-radius: 3px; 46 | background-color: gray; 47 | color: #fff; 48 | font-size: 0.7em; 49 | padding: 2px 4px; 50 | } 51 | 52 | span.type { 53 | margin-left: 5px; 54 | } 55 | 56 | span.glyphicon { 57 | display: inline-block; 58 | vertical-align: middle; 59 | color: #e1e1e1; 60 | margin-left: 7px; 61 | } 62 | 63 | span.returnType { 64 | margin-left: 3px; 65 | background-color: transparent!important; 66 | color: gray!important; 67 | } 68 | } 69 | 70 | 71 | span.static { 72 | display: inline-block; 73 | border-radius: 3px; 74 | background-color: @colorSubtitle!important; 75 | color: #fff; 76 | font-size: 0.7em; 77 | padding: 2px 4px; 78 | margin-right: 8px; 79 | } 80 | 81 | span.number { 82 | background-color: gray!important; 83 | } 84 | 85 | span.string { 86 | background-color: gray!important; 87 | } 88 | 89 | span.object { 90 | background-color: @colorLink!important; 91 | } 92 | 93 | span.array { 94 | background-color: @colorLink!important; 95 | } 96 | 97 | span.boolean { 98 | background-color: @colorRed!important; 99 | } 100 | 101 | .subsection-title { 102 | font-size: 14px; 103 | margin-top: 30px; 104 | color: @colorSubtitle; 105 | } 106 | 107 | .description { 108 | margin-top: 10px; 109 | // .font-description(); 110 | font-size: 13px; 111 | 112 | ul, ol { 113 | margin-bottom: 15px; 114 | } 115 | 116 | p { 117 | font-size: 13px; 118 | } 119 | 120 | h2 { 121 | margin-top: 30px; 122 | margin-bottom: 10px; 123 | padding-bottom: 10px; 124 | border-bottom: 1px solid #efefef; 125 | } 126 | 127 | pre { 128 | margin: 10px 0; 129 | } 130 | } 131 | 132 | .tag-source { 133 | font-size: 12px; 134 | } 135 | dt.tag-source { 136 | margin-top: 5px; 137 | } 138 | 139 | dt.tag-todo { 140 | font-size: 10px; 141 | display: inline-block; 142 | background-color: @colorLink; 143 | color: #fff; 144 | padding: 2px 4px; 145 | border-radius: 5px; 146 | } 147 | 148 | .type-signature { 149 | font-size: 12px; 150 | } 151 | 152 | .tag-deprecated { 153 | display: inline-block; 154 | font-size: 10px; 155 | } 156 | 157 | .important { 158 | background-color: @colorRed; 159 | color: #fff; 160 | padding: 2px 4px; 161 | border-radius: 5px; 162 | } 163 | 164 | .nameContainer { 165 | position: relative; 166 | margin-top: 20px; 167 | padding-top: 5px; 168 | border-top: 1px solid #e1e1e1; 169 | 170 | .inherited { 171 | display: inline-block; 172 | border-radius: 3px; 173 | background-color: #888!important; 174 | font-size: 0.7em; 175 | padding: 2px 4px; 176 | margin-right: 5px; 177 | a { 178 | color: #fff; 179 | } 180 | } 181 | 182 | .tag-source { 183 | position: absolute; 184 | top: 17px; 185 | right: 0; 186 | font-size: 10px; 187 | a { 188 | color: gray; 189 | } 190 | } 191 | 192 | &.inherited { 193 | color: gray; 194 | } 195 | 196 | h4 { 197 | margin-right: 150px; 198 | line-height: 1.3; 199 | 200 | .signature { 201 | font-size: 13px; 202 | font-weight: normal; 203 | font-family: Menlo,Monaco,Consolas,"Courier New",monospace; 204 | } 205 | 206 | .type-signature.type a { 207 | color: #fff; 208 | } 209 | } 210 | } 211 | 212 | pre { 213 | font-size: 11px; 214 | } 215 | 216 | table { 217 | width: 100%; 218 | margin-bottom: 15px; 219 | 220 | th { 221 | padding: 3px 3px; 222 | } 223 | 224 | td { 225 | vertical-align: top; 226 | padding: 5px 3px; 227 | } 228 | 229 | .name { 230 | width: 110px; 231 | } 232 | 233 | .type { 234 | width: 60px; 235 | color: #aaa; 236 | font-size: 11px; 237 | } 238 | 239 | .attributes { 240 | width: 80px; 241 | color: #aaa; 242 | font-size: 11px; 243 | } 244 | 245 | .description { 246 | font-size: 12px; 247 | p { 248 | margin: 0; 249 | } 250 | } 251 | 252 | .optional { 253 | float: left; 254 | border-radius: 3px; 255 | background-color: #ddd!important; 256 | font-size: 0.7em; 257 | padding: 2px 4px; 258 | margin-right: 5px; 259 | color: gray; 260 | } 261 | } 262 | 263 | .readme { 264 | p { 265 | margin-top: 15px; 266 | line-height: 1.2; 267 | font-size: 0.85em; 268 | } 269 | 270 | h1 { 271 | font-size: 1.7em; 272 | } 273 | 274 | h2 { 275 | margin-top: 30px; 276 | margin-bottom: 10px; 277 | padding-bottom: 10px; 278 | border-bottom: 1px solid #e1e1e1; 279 | } 280 | 281 | li { 282 | font-size: 0.9em; 283 | margin-bottom: 10px; 284 | } 285 | } 286 | 287 | article { 288 | ol, ul { 289 | margin-left: 25px; 290 | } 291 | 292 | ol > li { 293 | list-style-type: decimal; 294 | margin-bottom: 5px; 295 | } 296 | 297 | ul > li { 298 | margin-bottom: 5px; 299 | list-style-type: disc; 300 | } 301 | } 302 | } -------------------------------------------------------------------------------- /test/js/v1/TestMobileWidget.js: -------------------------------------------------------------------------------- 1 | Handlebars.registerHelper('ifEquals', function(arg1, arg2, options) { 2 | return (arg1 == arg2) ? options.fn(this) : options.inverse(this); 3 | }); 4 | Handlebars.registerHelper('json', function(context) { 5 | return JSON.stringify(context); 6 | }); 7 | Handlebars.registerHelper('log', function(context) { 8 | console.log(context); 9 | }); 10 | 11 | $(document).ready(function(){ 12 | ZOHO.embeddedApp.on("PageLoad",function(data){ 13 | console.log("pageLoadData"); 14 | console.log(data); 15 | ZOHO.CRM.UI.Resize({height:"300",width:"1000"}) 16 | var pageLoadData = data; 17 | ZOHO.CRM.META.getModules().then(function(data) 18 | { 19 | var templateData={}; 20 | // Filter out unsupported modules 21 | templateData.recordModules = data.modules.filter(function(obj){ 22 | return obj.api_supported; 23 | }) 24 | 25 | templateData.webTabs = data.modules.filter(function(obj){ 26 | return obj.generated_type === "widget" ; 27 | }) 28 | 29 | var template = $("#moduleSelection").html(); 30 | var compiledtempalte = Handlebars.compile(template); 31 | var templateWithData = compiledtempalte(templateData); 32 | $("#moduleSelectionDiv").html(templateWithData); 33 | $(".loader").hide(); 34 | setTimeout(function() 35 | { 36 | // set page load data to dom 37 | $("#pageLoadData").html("Page Load Data : " + JSON.stringify(pageLoadData)); 38 | $("#currentModule").change(); 39 | $("#webTabSelection").change(); 40 | },1000); 41 | }); 42 | }); 43 | ZOHO.embeddedApp.on("HistoryPopState",function(data){ 44 | console.log("HistoryPopState Data"); 45 | console.log( JSON.parse(JSON.stringify(data)) ); 46 | }); 47 | ZOHO.embeddedApp.init() 48 | }); 49 | 50 | 51 | 52 | 53 | const TestCases ={ 54 | 55 | }; 56 | 57 | function isOpenInNewTab() 58 | { 59 | return $("#openInNewTab").prop('checked'); 60 | } 61 | function getCurrentModule() 62 | { 63 | return $("#currentModule").val(); 64 | } 65 | function fetchAllRecords(selectTag) 66 | { 67 | var module = $(selectTag).val(); 68 | ZOHO.CRM.API.getAllRecords({Entity:module}) 69 | .then(function(response) 70 | { 71 | 72 | if(response.status == 204){ 73 | $("#RecordData").html("

    No Records Found


    "); 74 | return; 75 | } 76 | var template = $("#listview").html(); 77 | var compiledtempalte = Handlebars.compile(template); 78 | var templateWithData = compiledtempalte(response.data); 79 | $("#RecordData").html(templateWithData); 80 | }) 81 | } 82 | function webTabSelect(selectTag) 83 | { 84 | var module = $(selectTag).val(); 85 | $("#currentWebTab").val(module); 86 | } 87 | 88 | 89 | TestCases.clearFile = function(inputTag) 90 | { 91 | $(inputTag).val(""); 92 | }; 93 | 94 | TestCases.attachFile = function(inputTag,recordID) 95 | { 96 | debugger; 97 | var filesToLoad = inputTag.files; 98 | if(filesToLoad) 99 | { 100 | var module = getCurrentModule(); 101 | var file = filesToLoad[0]; 102 | ZOHO.CRM.API.attachFile({Entity:module,RecordID:recordID,File:{Name:file.name,Content:file}}) 103 | .then(function(data){ 104 | alert("File Uploaded Succesfully"); 105 | }); 106 | } 107 | }; 108 | TestCases.downloadAttachment = function(recordID) 109 | { 110 | var module = getCurrentModule(); 111 | ZOHO.CRM.API.getRelatedRecords({Entity:module,RecordID:recordID,RelatedList:"Attachments"}) 112 | .then(function(response) 113 | { 114 | if(response && response.data && response.data instanceof Array) 115 | { 116 | var fileSpec = response.data[0]; 117 | var fileID = fileSpec['$file_id']; 118 | var file_Name = fileSpec['File_Name']; 119 | 120 | ZOHO.CRM.API.getFile({id:fileID}) 121 | .then(function(data) 122 | { 123 | var a = document.createElement("a"); 124 | url = window.URL.createObjectURL(data); a.href = url; a.download = file_Name; a.click(); window.URL.revokeObjectURL(url); 125 | }); 126 | } 127 | else{ 128 | alert("No Attachment Available"); 129 | } 130 | }); 131 | 132 | }; 133 | 134 | TestCases.newRecord = function() 135 | { 136 | var module = getCurrentModule(); 137 | var config = {Entity:module}; 138 | if(isOpenInNewTab()) 139 | { 140 | config["Target"] = "_blank"; 141 | } 142 | 143 | ZOHO.CRM.UI.Record.create(config) 144 | .then(function(data){ 145 | console.log(data) 146 | }) 147 | }; 148 | 149 | TestCases.openWidget = function() 150 | { 151 | var message = $("#openWidgetData").val().trim(); 152 | var moduleName = $("#currentWebTab").val(); 153 | ZOHO.CRM.UI.WebTab.open({Entity:moduleName,Message:message}) 154 | } 155 | 156 | 157 | TestCases.openRecord = function(recordID) 158 | { 159 | var module = getCurrentModule(); 160 | var config = {Entity:module,RecordID:recordID}; 161 | if(isOpenInNewTab()) 162 | { 163 | config["Target"] = "_blank"; 164 | } 165 | 166 | ZOHO.CRM.UI.Record.open(config) 167 | .then(function(data){ 168 | console.log(data) 169 | }) 170 | }; 171 | 172 | TestCases.editRecord = function(recordID) 173 | { 174 | var module = getCurrentModule(); 175 | var config = {Entity:module,RecordID:recordID}; 176 | if(isOpenInNewTab()) 177 | { 178 | config["Target"] = "_blank"; 179 | } 180 | 181 | ZOHO.CRM.UI.Record.edit(config) 182 | .then(function(data){ 183 | console.log(data) 184 | }) 185 | }; 186 | 187 | TestCases.sendMailMob = function(Module,id,from_name,to_name,email,currentRow) 188 | { 189 | 190 | ZOHO.CRM.CONFIG.getCurrentUser() 191 | .then(function(data){ 192 | var config = { 193 | "Entity": Module, 194 | "RecordID": id, 195 | "APIData":{ 196 | "data": [{ 197 | "from":{"user_name": from_name,"email": data.users[0].email}, 198 | "to": [{"user_name": to_name,"email": email}], 199 | "subject": "test", 200 | "content": "Hi "+ to_name + "\n\nWelcome to ProfessionalCoaching..\n\nThanks,\n" + from_name, 201 | "mail_format": "text", 202 | "paper_type": "USLetter", 203 | "view_type": "portrait", 204 | "org_email": false 205 | }] 206 | } 207 | } 208 | ZOHO.CRM.API.sendMail(config) 209 | .then(function(data){ 210 | $(currentRow).siblings("p").text(data.data[0].message) 211 | }) 212 | }) 213 | }; 214 | TestCases.sendMailMobFromAlias = function(Module,id,from_name,to_name,email,currentRow) 215 | { 216 | ZOHO.CRM.META.EMAIL.getAvailableFromAliases().then(function(data){ 217 | var config = { 218 | "Entity": Module, 219 | "RecordID": id, 220 | "APIData":{ 221 | "data": [{ 222 | "from":{"user_name": from_name,"email": data.from_address_details[0].email}, 223 | "to": [{"user_name": to_name,"email": email}], 224 | "subject": "test", 225 | "content": "Hi "+ to_name + "\n\nWelcome to ProfessionalCoaching..\n\nThanks,\n" + from_name, 226 | "mail_format": "text", 227 | "paper_type": "USLetter", 228 | "view_type": "portrait", 229 | "org_email": false 230 | }] 231 | } 232 | } 233 | ZOHO.CRM.API.sendMail(config) 234 | .then(function(data){ 235 | $(currentRow).siblings("p").text(data.data[0].message) 236 | }) 237 | }) 238 | }; 239 | -------------------------------------------------------------------------------- /test/html/CompTest.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 55 | 56 | 57 | 127 | 158 | 190 | 191 | 192 |
    193 |
    194 | 195 | 196 |
    197 |

    In Progress...

    198 | 202 | 212 | 213 |
    214 | 222 | 223 | 224 | -------------------------------------------------------------------------------- /jaguarjs-jsdoc/static/styles/jaguar.css: -------------------------------------------------------------------------------- 1 | html, 2 | body { 3 | font: 1em "jaf-bernino-sans", "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Verdana, sans-serif; 4 | background-color: #fff; 5 | } 6 | ul, 7 | ol { 8 | margin: 0; 9 | padding: 0; 10 | } 11 | li { 12 | list-style-type: none; 13 | } 14 | #wrap { 15 | position: relative; 16 | } 17 | ::-webkit-scrollbar { 18 | width: 8px; 19 | background-color: transparent; 20 | } 21 | ::-webkit-scrollbar-thumb { 22 | background-color: gray; 23 | border-radius: 4px; 24 | } 25 | .navigation { 26 | position: fixed; 27 | float: left; 28 | width: 250px; 29 | height: 100%; 30 | background-color: #1a1a1a; 31 | } 32 | .navigation .applicationName { 33 | margin: 0; 34 | margin-top: 15px; 35 | padding: 10px 15px; 36 | font: bold 1.25em Helvetica; 37 | color: #fff; 38 | } 39 | .navigation .applicationName a { 40 | color: #fff; 41 | } 42 | .navigation .search { 43 | padding: 10px 15px; 44 | } 45 | .navigation .search input { 46 | background-color: #333; 47 | color: #fff; 48 | border-color: #555; 49 | } 50 | .navigation .list { 51 | padding: 10px 15px 0 15px; 52 | position: relative; 53 | overflow: auto; 54 | width: 100%; 55 | } 56 | .navigation li.item { 57 | margin-bottom: 8px; 58 | padding-bottom: 8px; 59 | border-bottom: 1px solid #333; 60 | } 61 | .navigation li.item a { 62 | color: #bbb; 63 | } 64 | .navigation li.item a:hover { 65 | color: #fff; 66 | } 67 | .navigation li.item .title { 68 | cursor: pointer; 69 | position: relative; 70 | display: block; 71 | font-size: 0.8em; 72 | } 73 | .navigation li.item .title a { 74 | color: #e1e1e1; 75 | } 76 | .navigation li.item .title a:hover { 77 | color: #fff; 78 | } 79 | .navigation li.item .title .static { 80 | display: block; 81 | border-radius: 3px; 82 | background-color: #779c34; 83 | color: #000; 84 | font-size: 0.7em; 85 | padding: 2px 4px; 86 | float: right; 87 | } 88 | .navigation li.item .subtitle { 89 | margin-top: 10px; 90 | font: bold 0.65em Helvetica; 91 | color: #779c34; 92 | display: block; 93 | } 94 | .navigation li.item ul > li { 95 | font-size: 0.7em; 96 | padding-left: 8px; 97 | margin-top: 2px; 98 | } 99 | .navigation li.item .itemMembers { 100 | display: none; 101 | } 102 | .main { 103 | padding: 20px 20px; 104 | margin-left: 250px; 105 | } 106 | .main .page-title { 107 | display: none; 108 | } 109 | .main h1 { 110 | font-weight: bold; 111 | font-size: 1.6em; 112 | margin: 0; 113 | } 114 | .main h2 { 115 | font-weight: bold; 116 | font-size: 1.5em; 117 | margin: 0; 118 | } 119 | .main h3 { 120 | font-weight: bold; 121 | font-size: 12px; 122 | margin: 5px 0; 123 | } 124 | .main h4 { 125 | font-weight: bold; 126 | font-size: 1em; 127 | } 128 | .main h5 { 129 | font-weight: bold; 130 | font-size: 12px; 131 | } 132 | .main dd { 133 | font-size: 12px; 134 | } 135 | .main h4.name span.type-signature { 136 | display: inline-block; 137 | border-radius: 3px; 138 | background-color: gray; 139 | color: #fff; 140 | font-size: 0.7em; 141 | padding: 2px 4px; 142 | } 143 | .main h4.name span.type { 144 | margin-left: 5px; 145 | } 146 | .main h4.name span.glyphicon { 147 | display: inline-block; 148 | vertical-align: middle; 149 | color: #e1e1e1; 150 | margin-left: 7px; 151 | } 152 | .main h4.name span.returnType { 153 | margin-left: 3px; 154 | background-color: transparent!important; 155 | color: gray!important; 156 | } 157 | .main span.static { 158 | display: inline-block; 159 | border-radius: 3px; 160 | background-color: #779c34 !important; 161 | color: #fff; 162 | font-size: 0.7em; 163 | padding: 2px 4px; 164 | margin-right: 8px; 165 | } 166 | .main span.number { 167 | background-color: gray!important; 168 | } 169 | .main span.string { 170 | background-color: gray!important; 171 | } 172 | .main span.object { 173 | background-color: #2a6496 !important; 174 | } 175 | .main span.array { 176 | background-color: #2a6496 !important; 177 | } 178 | .main span.boolean { 179 | background-color: #ee7d7d !important; 180 | } 181 | .main .subsection-title { 182 | font-size: 14px; 183 | margin-top: 30px; 184 | color: #779c34; 185 | } 186 | .main .description { 187 | margin-top: 10px; 188 | font-size: 13px; 189 | } 190 | .main .description ul, 191 | .main .description ol { 192 | margin-bottom: 15px; 193 | } 194 | .main .description p { 195 | font-size: 13px; 196 | } 197 | .main .description h2 { 198 | margin-top: 30px; 199 | margin-bottom: 10px; 200 | padding-bottom: 10px; 201 | border-bottom: 1px solid #efefef; 202 | } 203 | .main .description pre { 204 | margin: 10px 0; 205 | } 206 | .main .tag-source { 207 | font-size: 12px; 208 | } 209 | .main dt.tag-source { 210 | margin-top: 5px; 211 | } 212 | .main dt.tag-todo { 213 | font-size: 10px; 214 | display: inline-block; 215 | background-color: #2a6496; 216 | color: #fff; 217 | padding: 2px 4px; 218 | border-radius: 5px; 219 | } 220 | .main .type-signature { 221 | font-size: 12px; 222 | } 223 | .main .tag-deprecated { 224 | display: inline-block; 225 | font-size: 10px; 226 | } 227 | .main .important { 228 | background-color: #ee7d7d; 229 | color: #fff; 230 | padding: 2px 4px; 231 | border-radius: 5px; 232 | } 233 | .main .nameContainer { 234 | position: relative; 235 | margin-top: 20px; 236 | padding-top: 5px; 237 | border-top: 1px solid #e1e1e1; 238 | } 239 | .main .nameContainer .inherited { 240 | display: inline-block; 241 | border-radius: 3px; 242 | background-color: #888!important; 243 | font-size: 0.7em; 244 | padding: 2px 4px; 245 | margin-right: 5px; 246 | } 247 | .main .nameContainer .inherited a { 248 | color: #fff; 249 | } 250 | .main .nameContainer .tag-source { 251 | position: absolute; 252 | top: 17px; 253 | right: 0; 254 | font-size: 10px; 255 | } 256 | .main .nameContainer .tag-source a { 257 | color: gray; 258 | } 259 | .main .nameContainer.inherited { 260 | color: gray; 261 | } 262 | .main .nameContainer h4 { 263 | margin-right: 150px; 264 | line-height: 1.3; 265 | } 266 | .main .nameContainer h4 .signature { 267 | font-size: 13px; 268 | font-weight: normal; 269 | font-family: Menlo, Monaco, Consolas, "Courier New", monospace; 270 | } 271 | .main .nameContainer h4 .type-signature.type a { 272 | color: #fff; 273 | } 274 | .main pre { 275 | font-size: 11px; 276 | } 277 | .main table { 278 | width: 100%; 279 | margin-bottom: 15px; 280 | } 281 | .main table th { 282 | padding: 3px 3px; 283 | } 284 | .main table td { 285 | vertical-align: top; 286 | padding: 5px 3px; 287 | } 288 | .main table .name { 289 | width: 110px; 290 | } 291 | .main table .type { 292 | width: 60px; 293 | color: #aaa; 294 | font-size: 11px; 295 | } 296 | .main table .attributes { 297 | width: 80px; 298 | color: #aaa; 299 | font-size: 11px; 300 | } 301 | .main table .description { 302 | font-size: 12px; 303 | } 304 | .main table .description p { 305 | margin: 0; 306 | } 307 | .main table .optional { 308 | float: left; 309 | border-radius: 3px; 310 | background-color: #ddd!important; 311 | font-size: 0.7em; 312 | padding: 2px 4px; 313 | margin-right: 5px; 314 | color: gray; 315 | } 316 | .main .readme p { 317 | margin-top: 15px; 318 | line-height: 1.2; 319 | font-size: 0.85em; 320 | } 321 | .main .readme h1 { 322 | font-size: 1.7em; 323 | } 324 | .main .readme h2 { 325 | margin-top: 30px; 326 | margin-bottom: 10px; 327 | padding-bottom: 10px; 328 | border-bottom: 1px solid #e1e1e1; 329 | } 330 | .main .readme li { 331 | font-size: 0.9em; 332 | margin-bottom: 10px; 333 | } 334 | .main article ol, 335 | .main article ul { 336 | margin-left: 25px; 337 | } 338 | .main article ol > li { 339 | list-style-type: decimal; 340 | margin-bottom: 5px; 341 | } 342 | .main article ul > li { 343 | margin-bottom: 5px; 344 | list-style-type: disc; 345 | } 346 | footer { 347 | margin: 15px 0; 348 | padding-top: 15px; 349 | border-top: 1px solid #e1e1e1; 350 | font-family: "freight-text-pro", Georgia, Cambria, "Times New Roman", Times, serif; 351 | font-size: 0.8em; 352 | color: gray; 353 | } 354 | -------------------------------------------------------------------------------- /test/js/v0.9.5/ZohoEmbededAppSDK.min.js: -------------------------------------------------------------------------------- 1 | var ZOHO=function(){var b,f={};return{embeddedApp:{on:function(d,b){f[d]=b},init:function(){b=new ZSDK;var d,g=new Promise(function(b,c){d=b});b.OnLoad(function(){d()});for(var c in f)b.getContext().Event.Listen(c,f[c]);return g}},CRM:function(){function d(a){return b.getContext().Event.Trigger("CRM_EVENT",a,!0)}function g(a,b,c,e){a={category:"CREATE",Entity:a,RelatedID:c,APIData:b};a.type=e||"RECORD";return d(a)}function c(a,b,c){return d({category:"READ",APIData:{Entity:a,RecordID:b,RelatedList:c}})} 2 | function h(a,b,c){var e=void 0;if("CONNECTOR"!=c){c=b.url;var g=b.params,e=b.headers;b=b.body;if(!c)throw{Message:"Url missing"};if(g){var h,t=[];for(h in g)t.push(encodeURIComponent(h)+"\x3d"+encodeURIComponent(g[h]));h=t.join("\x26");c+=(-1(new Date).getTime(););};return b}(window.ZSDKUtil||{}),ZSDKMessageManager=function(b){function f(a){try{var b="string"===typeof a.data?JSON.parse(a.data):a.data}catch(e){b=a.data}var u=b.type,l=b.eventName;try{var z;if(!(z="SET_CONTEXT"===l)){var A=a.source, 10 | B=a.origin;z=q&&p===A&&r===B?!0:Error("Un-Authorized Message.")}if(z)switch(u){case "FRAMEWORK.EVENT":var h={SET_CONTEXT:d,UPDATE_CONTEXT:g,EVENT_RESPONSE:c}[b.eventName];h&&"function"===typeof h?h(a,b):ZSDKEventManager.NotifyEventListeners(k.AppContext,b.eventName,b.data);break;case "SDK.CNTR_ACCESS_CODE_RECEIVED":var f=b.code,v=b.error,m=b.state;!f||v&&"undefined"!==v?f&&"undefined"!==f||!v||(n[m]={error:v,error_time:(new Date).getTime()}):n[m]={code:f,access_code_time:(new Date).getTime()};break; 11 | default:k.MessageInterceptor(a,b)}}catch(e){x.Error("[SDK.MessageHandler] \x3d\x3e ",e.stack)}}function d(a,b){var c=a.origin;if(!w.test(c))throw Error("Messsage received from unauthorized domain.");p=a.source;r=c;k.SetContext(b.data);k.ExecuteLoadHandler();q=!0}function g(a,b){}function c(b,c){var d=c.promiseid,g=c.data;a.hasOwnProperty(d)&&(a[d].resolve(g),a[d]=void 0,delete a[d])}function h(b){return new Promise(function(c,d){a[b]={resolve:c,reject:d,time:(new Date).getTime()}})}function e(a){"object"=== 12 | typeof a&&(a.appOrigin=encodeURIComponent(window.location.href));if(!p)throw Error("Parentwindow reference not found.");p.postMessage(a,k.QueryParams.serviceOrigin)}var k,x=ZSDKUtil.getLogger(),m=100,a={},w=/^https?:\/\/[a-zA-Z0-9-_]*.(sandbox.crm-oem.com|csez.zohocorpin.com|zoho.com|localzoho.com|zohoplatform.com|localzohoplatform.com|zohosandbox.com|localzohosandbox.com)(:[0-9]{0,4})?$/,q=!1,p,r,n={};b.Init=function(a,c){if(!a||"object"!==typeof a)throw Error("Invalid Context object passed");if(c&& 13 | "object"!==typeof c)throw Error("Invalid Configuration Passed to MessageManager");k=a;return f.bind(b)};b.RegisterApp=function(){var a={type:"SDK.EVENT",eventName:"REGISTER",appOrigin:encodeURIComponent(window.location.href)};window.top.postMessage(a,k.QueryParams.serviceOrigin)};b.DERegisterApp=function(){var a={type:"SDK.EVENT",eventName:"DEREGISTER",uniqueID:k.getUniqueID()};e(a)};b.SendRequest=function(a){if(!a||"object"!==typeof a)throw Error("Invalid Options passed");if(a.connector&&ZSDKUtil.isDevMode()){var b= 14 | k.GetConnectors();return ZSDKAPIHelper.GetRequest(a,b)}b="Promise"+m++;a={type:"SDK.EVENT",eventName:"HTTP_REQUEST",uniqueID:k.getUniqueID(),time:(new Date).getTime(),promiseid:b,data:a};e(a);a=h(b);return a};b.TriggerEvent=function(a,b,c){if(!a)throw Error("Invalid Eventname : ",a);var d=c?"Promise"+m++:void 0;a={type:"SDK.EVENT",eventName:a,uniqueID:k.getUniqueID(),time:(new Date).getTime(),promiseid:d,data:b};e(a);if(c)return h(d)};b.getFetchedAccessCode=function(a){return n[a]};b.UpdateConnectorData= 15 | function(a,b){return new Promise(function(c,d){$.post({url:"http://127.0.0.1:5000/updateconnector",dataType:"json",data:{connectorName:a,connectorData:JSON.stringify(b)}}).then(function(a){c(a)},function(a){d(JSON.parse(a))})})};return b}(window.ZSDKMessageManager||{}),ZSDKEventManager=function(b){var f=ZSDKUtil.getLogger(),d={};b.AttachEventListener=function(b,c){"function"===typeof c&&(Array.isArray(d[b])||(d[b]=[]),d[b].push(c))};b.NotifyEventListeners=function(b,c,h){var e=c.match(/^\__[A-Za-z_]+\__$/gi); 16 | Array.isArray(e);if((e=d[c])&&Array.isArray(e))for(c=0;c(new Date).getTime(););};return b}(window.ZSDKUtil||{}),ZSDKMessageManager=function(b){function g(b){try{var q="string"===typeof b.data?JSON.parse(b.data):b.data}catch(e){q=b.data}var g=q.type,k=q.eventName;try{var l;if(!(l="SET_CONTEXT"===k)){var n=b.source, 16 | m=b.origin;l=h.isAppRegistered()&&r===n&&u===m?!0:Error("Un-Authorized Message.")}if(l)switch(g){case "FRAMEWORK.EVENT":var w={SET_CONTEXT:d,UPDATE_CONTEXT:f,EVENT_RESPONSE:c,EVENT_RESPONSE_FAILURE:p}[q.eventName];w&&"function"===typeof w?w(b,q):ZSDKEventManager.NotifyEventListeners(h.AppContext,q.eventName,q.data);break;default:h.MessageInterceptor(b,q)}}catch(e){a.Error("[SDK.MessageHandler] \x3d\x3e ",e.stack)}}function d(a,b){r=window.parent;u=h.QueryParams.serviceOrigin;h.SetContext(b.data); 17 | h.ExecuteLoadHandler()}function f(a,b){}function c(a,b){k(b.promiseid,!0,b.data)}function p(a,b){k(b.promiseid,!1,b.data)}function k(a,b,c){n.hasOwnProperty(a)&&(b?n[a].resolve(c):n[a].reject(c),n[a]=void 0,delete n[a])}function l(a){return new Promise(function(b,c){n[a]={resolve:b,reject:c,time:(new Date).getTime()}})}function x(a){"object"===typeof a&&(a.appOrigin=encodeURIComponent(t()));if(!r)throw Error("Parentwindow reference not found.");r.postMessage(a,h.QueryParams.serviceOrigin)}function t(){return window.location.protocol+ 18 | "//"+window.location.host+window.location.pathname}var h,a=ZSDKUtil.getLogger(),e=100,n={},r,u;b.Init=function(a,c){if(!a||"object"!==typeof a)throw Error("Invalid Context object passed");if(c&&"object"!==typeof c)throw Error("Invalid Configuration Passed to MessageManager");h=a;return g.bind(b)};b.RegisterApp=function(){var a={type:"SDK.EVENT",eventName:"REGISTER",appOrigin:encodeURIComponent(t())};window.parent.postMessage(a,h.QueryParams.serviceOrigin)};b.DERegisterApp=function(){var a={type:"SDK.EVENT", 19 | eventName:"DEREGISTER",uniqueID:h.getUniqueID()};x(a)};b.SendRequest=function(a){if(!a||"object"!==typeof a)throw Error("Invalid Options passed");var b;b="Promise"+e++;a={type:"SDK.EVENT",eventName:"HTTP_REQUEST",uniqueID:h.getUniqueID(),time:(new Date).getTime(),promiseid:b,data:a};x(a);b=l(b);return b};b.TriggerEvent=function(a,b,c){if(!a)throw Error("Invalid Eventname : ",a);var d=c?"Promise"+e++:void 0;a={type:"SDK.EVENT",eventName:a,uniqueID:h.getUniqueID(),time:(new Date).getTime(),promiseid:d, 20 | data:b};x(a);if(c)return l(d)};return b}(window.ZSDKMessageManager||{}),ZSDKEventManager=function(b){var g=ZSDKUtil.getLogger(),d={};b.AttachEventListener=function(b,c){"function"===typeof c&&(Array.isArray(d[b])||(d[b]=[]),d[b].push(c))};b.NotifyEventListeners=function(b,c,p){var k=c.match(/^\__[A-Za-z_]+\__$/gi);Array.isArray(k);if((k=d[c])&&Array.isArray(k))for(c=0;c122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;ci[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m), 9 | l=[],p={},d=0,g=e.length;d=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, 10 | q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/, 11 | q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g, 12 | "");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a), 13 | a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e} 14 | for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], 18 | "catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"], 19 | H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], 20 | J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+ 21 | I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]), 22 | ["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css", 23 | /^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}), 24 | ["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes", 25 | hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p=0){var k=k.match(g),f,b;if(b= 26 | !k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}pu;u++)if(t.call(e,n[u],u,n)===r)return}else for(var a=j.keys(n),u=0,i=a.length;i>u;u++)if(t.call(e,n[a[u]],a[u],n)===r)return};j.map=j.collect=function(n,t,r){var e=[];return null==n?e:p&&n.map===p?n.map(t,r):(A(n,function(n,u,i){e.push(t.call(r,n,u,i))}),e)};var E="Reduce of empty array with no initial value";j.reduce=j.foldl=j.inject=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),h&&n.reduce===h)return e&&(t=j.bind(t,e)),u?n.reduce(t,r):n.reduce(t);if(A(n,function(n,i,a){u?r=t.call(e,r,n,i,a):(r=n,u=!0)}),!u)throw new TypeError(E);return r},j.reduceRight=j.foldr=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),v&&n.reduceRight===v)return e&&(t=j.bind(t,e)),u?n.reduceRight(t,r):n.reduceRight(t);var i=n.length;if(i!==+i){var a=j.keys(n);i=a.length}if(A(n,function(o,c,l){c=a?a[--i]:--i,u?r=t.call(e,r,n[c],c,l):(r=n[c],u=!0)}),!u)throw new TypeError(E);return r},j.find=j.detect=function(n,t,r){var e;return O(n,function(n,u,i){return t.call(r,n,u,i)?(e=n,!0):void 0}),e},j.filter=j.select=function(n,t,r){var e=[];return null==n?e:g&&n.filter===g?n.filter(t,r):(A(n,function(n,u,i){t.call(r,n,u,i)&&e.push(n)}),e)},j.reject=function(n,t,r){return j.filter(n,function(n,e,u){return!t.call(r,n,e,u)},r)},j.every=j.all=function(n,t,e){t||(t=j.identity);var u=!0;return null==n?u:d&&n.every===d?n.every(t,e):(A(n,function(n,i,a){return(u=u&&t.call(e,n,i,a))?void 0:r}),!!u)};var O=j.some=j.any=function(n,t,e){t||(t=j.identity);var u=!1;return null==n?u:m&&n.some===m?n.some(t,e):(A(n,function(n,i,a){return u||(u=t.call(e,n,i,a))?r:void 0}),!!u)};j.contains=j.include=function(n,t){return null==n?!1:y&&n.indexOf===y?n.indexOf(t)!=-1:O(n,function(n){return n===t})},j.invoke=function(n,t){var r=o.call(arguments,2),e=j.isFunction(t);return j.map(n,function(n){return(e?t:n[t]).apply(n,r)})},j.pluck=function(n,t){return j.map(n,function(n){return n[t]})},j.where=function(n,t,r){return j.isEmpty(t)?r?void 0:[]:j[r?"find":"filter"](n,function(n){for(var r in t)if(t[r]!==n[r])return!1;return!0})},j.findWhere=function(n,t){return j.where(n,t,!0)},j.max=function(n,t,r){if(!t&&j.isArray(n)&&n[0]===+n[0]&&n.length<65535)return Math.max.apply(Math,n);if(!t&&j.isEmpty(n))return-1/0;var e={computed:-1/0,value:-1/0};return A(n,function(n,u,i){var a=t?t.call(r,n,u,i):n;a>e.computed&&(e={value:n,computed:a})}),e.value},j.min=function(n,t,r){if(!t&&j.isArray(n)&&n[0]===+n[0]&&n.length<65535)return Math.min.apply(Math,n);if(!t&&j.isEmpty(n))return 1/0;var e={computed:1/0,value:1/0};return A(n,function(n,u,i){var a=t?t.call(r,n,u,i):n;ae||r===void 0)return 1;if(e>r||e===void 0)return-1}return n.index-t.index}),"value")};var F=function(n){return function(t,r,e){var u={},i=null==r?j.identity:k(r);return A(t,function(r,a){var o=i.call(e,r,a,t);n(u,o,r)}),u}};j.groupBy=F(function(n,t,r){(j.has(n,t)?n[t]:n[t]=[]).push(r)}),j.indexBy=F(function(n,t,r){n[t]=r}),j.countBy=F(function(n,t){j.has(n,t)?n[t]++:n[t]=1}),j.sortedIndex=function(n,t,r,e){r=null==r?j.identity:k(r);for(var u=r.call(e,t),i=0,a=n.length;a>i;){var o=i+a>>>1;r.call(e,n[o])=0})})},j.difference=function(n){var t=c.apply(e,o.call(arguments,1));return j.filter(n,function(n){return!j.contains(t,n)})},j.zip=function(){for(var n=j.max(j.pluck(arguments,"length").concat(0)),t=new Array(n),r=0;n>r;r++)t[r]=j.pluck(arguments,""+r);return t},j.object=function(n,t){if(null==n)return{};for(var r={},e=0,u=n.length;u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},j.indexOf=function(n,t,r){if(null==n)return-1;var e=0,u=n.length;if(r){if("number"!=typeof r)return e=j.sortedIndex(n,t),n[e]===t?e:-1;e=0>r?Math.max(0,u+r):r}if(y&&n.indexOf===y)return n.indexOf(t,r);for(;u>e;e++)if(n[e]===t)return e;return-1},j.lastIndexOf=function(n,t,r){if(null==n)return-1;var e=null!=r;if(b&&n.lastIndexOf===b)return e?n.lastIndexOf(t,r):n.lastIndexOf(t);for(var u=e?r:n.length;u--;)if(n[u]===t)return u;return-1},j.range=function(n,t,r){arguments.length<=1&&(t=n||0,n=0),r=arguments[2]||1;for(var e=Math.max(Math.ceil((t-n)/r),0),u=0,i=new Array(e);e>u;)i[u++]=n,n+=r;return i};var R=function(){};j.bind=function(n,t){var r,e;if(_&&n.bind===_)return _.apply(n,o.call(arguments,1));if(!j.isFunction(n))throw new TypeError;return r=o.call(arguments,2),e=function(){if(!(this instanceof e))return n.apply(t,r.concat(o.call(arguments)));R.prototype=n.prototype;var u=new R;R.prototype=null;var i=n.apply(u,r.concat(o.call(arguments)));return Object(i)===i?i:u}},j.partial=function(n){var t=o.call(arguments,1);return function(){return n.apply(this,t.concat(o.call(arguments)))}},j.bindAll=function(n){var t=o.call(arguments,1);if(0===t.length)throw new Error("bindAll must be passed function names");return A(t,function(t){n[t]=j.bind(n[t],n)}),n},j.memoize=function(n,t){var r={};return t||(t=j.identity),function(){var e=t.apply(this,arguments);return j.has(r,e)?r[e]:r[e]=n.apply(this,arguments)}},j.delay=function(n,t){var r=o.call(arguments,2);return setTimeout(function(){return n.apply(null,r)},t)},j.defer=function(n){return j.delay.apply(j,[n,1].concat(o.call(arguments,1)))},j.throttle=function(n,t,r){var e,u,i,a=null,o=0;r||(r={});var c=function(){o=r.leading===!1?0:new Date,a=null,i=n.apply(e,u)};return function(){var l=new Date;o||r.leading!==!1||(o=l);var f=t-(l-o);return e=this,u=arguments,0>=f?(clearTimeout(a),a=null,o=l,i=n.apply(e,u)):a||r.trailing===!1||(a=setTimeout(c,f)),i}},j.debounce=function(n,t,r){var e,u,i,a,o;return function(){i=this,u=arguments,a=new Date;var c=function(){var l=new Date-a;t>l?e=setTimeout(c,t-l):(e=null,r||(o=n.apply(i,u)))},l=r&&!e;return e||(e=setTimeout(c,t)),l&&(o=n.apply(i,u)),o}},j.once=function(n){var t,r=!1;return function(){return r?t:(r=!0,t=n.apply(this,arguments),n=null,t)}},j.wrap=function(n,t){return function(){var r=[n];return a.apply(r,arguments),t.apply(this,r)}},j.compose=function(){var n=arguments;return function(){for(var t=arguments,r=n.length-1;r>=0;r--)t=[n[r].apply(this,t)];return t[0]}},j.after=function(n,t){return function(){return--n<1?t.apply(this,arguments):void 0}},j.keys=w||function(n){if(n!==Object(n))throw new TypeError("Invalid object");var t=[];for(var r in n)j.has(n,r)&&t.push(r);return t},j.values=function(n){for(var t=j.keys(n),r=t.length,e=new Array(r),u=0;r>u;u++)e[u]=n[t[u]];return e},j.pairs=function(n){for(var t=j.keys(n),r=t.length,e=new Array(r),u=0;r>u;u++)e[u]=[t[u],n[t[u]]];return e},j.invert=function(n){for(var t={},r=j.keys(n),e=0,u=r.length;u>e;e++)t[n[r[e]]]=r[e];return t},j.functions=j.methods=function(n){var t=[];for(var r in n)j.isFunction(n[r])&&t.push(r);return t.sort()},j.extend=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]=t[r]}),n},j.pick=function(n){var t={},r=c.apply(e,o.call(arguments,1));return A(r,function(r){r in n&&(t[r]=n[r])}),t},j.omit=function(n){var t={},r=c.apply(e,o.call(arguments,1));for(var u in n)j.contains(r,u)||(t[u]=n[u]);return t},j.defaults=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]===void 0&&(n[r]=t[r])}),n},j.clone=function(n){return j.isObject(n)?j.isArray(n)?n.slice():j.extend({},n):n},j.tap=function(n,t){return t(n),n};var S=function(n,t,r,e){if(n===t)return 0!==n||1/n==1/t;if(null==n||null==t)return n===t;n instanceof j&&(n=n._wrapped),t instanceof j&&(t=t._wrapped);var u=l.call(n);if(u!=l.call(t))return!1;switch(u){case"[object String]":return n==String(t);case"[object Number]":return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case"[object Date]":case"[object Boolean]":return+n==+t;case"[object RegExp]":return n.source==t.source&&n.global==t.global&&n.multiline==t.multiline&&n.ignoreCase==t.ignoreCase}if("object"!=typeof n||"object"!=typeof t)return!1;for(var i=r.length;i--;)if(r[i]==n)return e[i]==t;var a=n.constructor,o=t.constructor;if(a!==o&&!(j.isFunction(a)&&a instanceof a&&j.isFunction(o)&&o instanceof o))return!1;r.push(n),e.push(t);var c=0,f=!0;if("[object Array]"==u){if(c=n.length,f=c==t.length)for(;c--&&(f=S(n[c],t[c],r,e)););}else{for(var s in n)if(j.has(n,s)&&(c++,!(f=j.has(t,s)&&S(n[s],t[s],r,e))))break;if(f){for(s in t)if(j.has(t,s)&&!c--)break;f=!c}}return r.pop(),e.pop(),f};j.isEqual=function(n,t){return S(n,t,[],[])},j.isEmpty=function(n){if(null==n)return!0;if(j.isArray(n)||j.isString(n))return 0===n.length;for(var t in n)if(j.has(n,t))return!1;return!0},j.isElement=function(n){return!(!n||1!==n.nodeType)},j.isArray=x||function(n){return"[object Array]"==l.call(n)},j.isObject=function(n){return n===Object(n)},A(["Arguments","Function","String","Number","Date","RegExp"],function(n){j["is"+n]=function(t){return l.call(t)=="[object "+n+"]"}}),j.isArguments(arguments)||(j.isArguments=function(n){return!(!n||!j.has(n,"callee"))}),"function"!=typeof/./&&(j.isFunction=function(n){return"function"==typeof n}),j.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},j.isNaN=function(n){return j.isNumber(n)&&n!=+n},j.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"==l.call(n)},j.isNull=function(n){return null===n},j.isUndefined=function(n){return n===void 0},j.has=function(n,t){return f.call(n,t)},j.noConflict=function(){return n._=t,this},j.identity=function(n){return n},j.times=function(n,t,r){for(var e=Array(Math.max(0,n)),u=0;n>u;u++)e[u]=t.call(r,u);return e},j.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))};var I={escape:{"&":"&","<":"<",">":">",'"':""","'":"'"}};I.unescape=j.invert(I.escape);var T={escape:new RegExp("["+j.keys(I.escape).join("")+"]","g"),unescape:new RegExp("("+j.keys(I.unescape).join("|")+")","g")};j.each(["escape","unescape"],function(n){j[n]=function(t){return null==t?"":(""+t).replace(T[n],function(t){return I[n][t]})}}),j.result=function(n,t){if(null==n)return void 0;var r=n[t];return j.isFunction(r)?r.call(n):r},j.mixin=function(n){A(j.functions(n),function(t){var r=j[t]=n[t];j.prototype[t]=function(){var n=[this._wrapped];return a.apply(n,arguments),z.call(this,r.apply(j,n))}})};var N=0;j.uniqueId=function(n){var t=++N+"";return n?n+t:t},j.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var q=/(.)^/,B={"'":"'","\\":"\\","\r":"r","\n":"n"," ":"t","\u2028":"u2028","\u2029":"u2029"},D=/\\|'|\r|\n|\t|\u2028|\u2029/g;j.template=function(n,t,r){var e;r=j.defaults({},r,j.templateSettings);var u=new RegExp([(r.escape||q).source,(r.interpolate||q).source,(r.evaluate||q).source].join("|")+"|$","g"),i=0,a="__p+='";n.replace(u,function(t,r,e,u,o){return a+=n.slice(i,o).replace(D,function(n){return"\\"+B[n]}),r&&(a+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'"),e&&(a+="'+\n((__t=("+e+"))==null?'':__t)+\n'"),u&&(a+="';\n"+u+"\n__p+='"),i=o+t.length,t}),a+="';\n",r.variable||(a="with(obj||{}){\n"+a+"}\n"),a="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+a+"return __p;\n";try{e=new Function(r.variable||"obj","_",a)}catch(o){throw o.source=a,o}if(t)return e(t,j);var c=function(n){return e.call(this,n,j)};return c.source="function("+(r.variable||"obj")+"){\n"+a+"}",c},j.chain=function(n){return j(n).chain()};var z=function(n){return this._chain?j(n).chain():n};j.mixin(j),A(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=e[n];j.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!=n&&"splice"!=n||0!==r.length||delete r[0],z.call(this,r)}}),A(["concat","join","slice"],function(n){var t=e[n];j.prototype[n]=function(){return z.call(this,t.apply(this._wrapped,arguments))}}),j.extend(j.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}})}).call(this); 6 | //# sourceMappingURL=underscore-min.map -------------------------------------------------------------------------------- /test/js/v1/TestFlowWebTab.js: -------------------------------------------------------------------------------- 1 | describe("SDK Testing", function() { 2 | beforeAll(function(done) 3 | { 4 | jasmine.DEFAULT_TIMEOUT_INTERVAL = 4000; 5 | ZOHO.embeddedApp.init() 6 | .then(function() 7 | { 8 | done(); 9 | }); 10 | }); 11 | afterAll(testCompleted); 12 | /* 13 | * Insert a new Record into the system 14 | */ 15 | it("Insert Lead", function(done) 16 | { 17 | TestCases.insertRecord("Leads",TestSpec.recordData,function(result,recordID){ 18 | TestSpec.recordID = recordID; 19 | expect(result).toBe(true); 20 | done(); 21 | }); 22 | }); 23 | /* 24 | * insert Campaigns 25 | */ 26 | it("insert record in Campaigns module",function(done) 27 | { 28 | TestCases.insertCampaigns("Campaigns",{"Campaign_Name": "campaign"+Date.now(),"type":"Conference"},function(result){ 29 | expect(result).toBe(true); 30 | done(); 31 | }); 32 | }); 33 | /* 34 | * add notes to the created record 35 | */ 36 | it("add notes", function(done) 37 | { 38 | TestCases.addNotes("Leads",TestSpec.recordID,function(result){ 39 | expect(result).toBe(true); 40 | done(); 41 | }); 42 | }); 43 | /* 44 | * update record 45 | */ 46 | it("update record",function(done){ 47 | TestCases.updateRecord("Leads",TestSpec.recordID,TestSpec.recordData,function(result){ 48 | expect(result).toBe(true); 49 | done(); 50 | }) 51 | }); 52 | /* 53 | * update voiceURL 54 | */ 55 | it("update voice url",function(done){ 56 | TestCases.updateVoiceURL(TestSpec.recordID,TestSpec.voiceURL,function(result){ 57 | expect(result).toBe(true); 58 | done(); 59 | }) 60 | }); 61 | /* 62 | * execute custom function 63 | */ 64 | it("executeFunction",function(done){ 65 | TestCases.executeFunction(function(result){ 66 | expect(result).toBe(true); 67 | done(); 68 | }) 69 | }); 70 | /* 71 | * update relatedlist 72 | */ 73 | it("update related records",function(done){ 74 | var APIData = { 75 | Description:"Test description" 76 | } 77 | TestCases.updateRelatedRecords("Leads",TestSpec.recordID,"Campaigns",TestSpec.campaignId,APIData,function(result){ 78 | expect(result).toBe(true); 79 | done(); 80 | }) 81 | }); 82 | /* 83 | * upload file 84 | */ 85 | it("uploadFile",function(done){ 86 | var file = new File(['foo', 'bar'], 'foobar.txt'); 87 | // var fileType = file.type; 88 | // var config = { 89 | // "CONTENT_TYPE": "multipart", 90 | // "PARTS": [{ 91 | // "headers": { 92 | // "Content-Disposition": "file;" 93 | // }, 94 | // "content": "__FILE__" 95 | // }], 96 | // "FILE": { 97 | // "fileParam": "content", 98 | // "file": file 99 | // } 100 | // } 101 | TestCases.uploadFile(file,function(result){ 102 | expect(result).toBe(true); 103 | done(); 104 | }) 105 | }) 106 | /* 107 | * delink related record 108 | */ 109 | it("delinkRelatedRecord",function(done){ 110 | TestCases.delinkRelatedRecord("Leads",TestSpec.recordID,"Campaigns",TestSpec.campaignId,function(result){ 111 | expect(result).toBe(true); 112 | done(); 113 | }) 114 | }); 115 | /* 116 | * get getRelatedRecords 117 | */ 118 | it("getRelatedRecords", function(done) 119 | { 120 | TestCases.getRelatedRecords("Leads",TestSpec.recordID,"Notes",function(result){ 121 | expect(result).toBe(true); 122 | done(); 123 | }); 124 | }); 125 | /* 126 | * get all actions 127 | */ 128 | it("get All Actions", function(done) 129 | { 130 | TestCases.getAllActions("Leads",TestSpec.recordID,function(result){ 131 | expect(result).toBe(true); 132 | done(); 133 | }); 134 | }); 135 | /* 136 | * get all profiles 137 | */ 138 | it("get All profiles", function(done) 139 | { 140 | TestCases.getAllProfiles("Leads",TestSpec.recordID,function(result){ 141 | expect(result).toBe(true); 142 | done(); 143 | }); 144 | }); 145 | /* 146 | * get ProfileDetails 147 | */ 148 | it("get profile details", function(done) 149 | { 150 | TestCases.getProfile(TestSpec.profileId,function(result){ 151 | expect(result).toBe(true); 152 | done(); 153 | }); 154 | }); 155 | /* 156 | * get all roles 157 | */ 158 | it("get All roles", function(done) 159 | { 160 | TestCases.getAllRoles(function(result){ 161 | expect(result).toBe(true); 162 | done(); 163 | }); 164 | }); 165 | /* 166 | * get RoleDetails 167 | */ 168 | it("get role details", function(done) 169 | { 170 | TestCases.getRole(TestSpec.roleId,function(result){ 171 | expect(result).toBe(true); 172 | done(); 173 | }); 174 | }); 175 | /* 176 | * getFile 177 | */ 178 | it("getFile",function(done){ 179 | var config = { 180 | id:TestSpec.uploadFileID 181 | } 182 | TestCases.getFile(config,function(result){ 183 | expect(result).toBe(true); 184 | done(); 185 | }) 186 | }); 187 | /* 188 | * get getAvailableFromAliases 189 | */ 190 | it("get Available From Aliases", function(done) 191 | { 192 | TestCases.getAvailableFromAliases(function(result){ 193 | expect(result).toBe(true); 194 | done(); 195 | }); 196 | }); 197 | /* 198 | * send Email 199 | */ 200 | it("send Email", function(done) 201 | { 202 | TestCases.sendMail("Leads",TestSpec.recordID,TestSpec.mailData,function(result){ 203 | expect(result).toBe(true); 204 | done(); 205 | }); 206 | }); 207 | /* 208 | * upsert api without duplicate fields 209 | */ 210 | it("upsert without duplicate fields", function(done) 211 | { 212 | TestCases.upsertRecordWithoutDuplicate("Leads",TestSpec.upsertData,function(result){ 213 | expect(result).toBe(true); 214 | done(); 215 | }); 216 | }); 217 | /* 218 | * upsert api with duplicate fields -- website 219 | */ 220 | it("upsert with duplicate fields (Website)", function(done) 221 | { 222 | TestCases.upsertWithDuplicateField("Leads",TestSpec.upsertData,function(result){ 223 | expect(result).toBe(false); 224 | done(); 225 | }); 226 | }); 227 | /* 228 | * get approval records 229 | */ 230 | it("get approval records", function(done) 231 | { 232 | TestCases.getApprovalRecords(function(result){ 233 | expect(result).toBe(true); 234 | done(); 235 | }); 236 | }); 237 | /* 238 | * get approval records by id 239 | */ 240 | it("get approval recordById", function(done) 241 | { 242 | TestCases.getApprovalRecordById(TestSpec.approvalID,function(result){ 243 | expect(result).toBe(true); 244 | done(); 245 | }); 246 | }); 247 | /* 248 | * get approval records by id 249 | */ 250 | it("approve record", function(done) 251 | { 252 | TestCases.approveRecord("Leads",TestSpec.recordID,"approve",function(result){ 253 | expect(result).toBe(true); 254 | done(); 255 | }); 256 | }); 257 | /* 258 | * get approval History 259 | */ 260 | it("get approvalHistory", function(done) 261 | { 262 | TestCases.getApprovalHistory(function(result){ 263 | expect(result).toBe(true); 264 | done(); 265 | }); 266 | }); 267 | /* 268 | * get Blueprint details 269 | */ 270 | it("get blueprint", function(done) 271 | { 272 | TestCases.getBlueprint("Leads",TestSpec.recordID,function(result){ 273 | expect(result).toBe(true); 274 | done(); 275 | }); 276 | }); 277 | /* 278 | * update blue print 279 | */ 280 | it("update blue print", function(done) 281 | { 282 | var BlueprintData = 283 | { 284 | "blueprint": [ 285 | { 286 | "transition_id":TestSpec.blueprintId, 287 | "data": { 288 | "Phone": "8940372937", 289 | "Notes": "Updated via blueprint" 290 | } 291 | } 292 | ] 293 | } 294 | TestCases.updateBluePrint("Leads",TestSpec.recordID,BlueprintData,function(result){ 295 | expect(result).toBe(true); 296 | done(); 297 | }); 298 | }); 299 | /* 300 | * Get All records 301 | */ 302 | it("getAll Records", function(done) 303 | { 304 | TestCases.getAllRecord(function(result){ 305 | expect(result).toBe(true); 306 | done(); 307 | }); 308 | }); 309 | /* 310 | * Getch The Lead using the RecordID and verify its data 311 | */ 312 | it("verify inserted Lead", function(done) 313 | { 314 | TestCases.verifyRecord("Leads",TestSpec.recordID,TestSpec.recordData,function(result){ 315 | expect(result).toBe(true); 316 | done(); 317 | }); 318 | }); 319 | it("Delete Lead", function(done) 320 | { 321 | TestCases.deleteRecord("Leads",TestSpec.recordID,function(result){ 322 | expect(result).toBe(true); 323 | done(); 324 | }); 325 | }); 326 | it("getAll Users", function(done) 327 | { 328 | TestCases.getUser(undefined,function(result,userID){ 329 | TestSpec.userID = userID; 330 | expect(result).toBe(true); 331 | done(); 332 | }); 333 | }); 334 | it("getUserByID", function(done) 335 | { 336 | if(!TestSpec.userID){ 337 | expect(true).toBe(false); 338 | } 339 | else 340 | { 341 | TestCases.getUser(TestSpec.userID,function(result){ 342 | expect(result).toBe(true); 343 | done(); 344 | }); 345 | } 346 | 347 | }); 348 | it("getOrgVariable1",function(done){ 349 | TestCases.getOrgVariable(TestSpec.orgVariable1,function(result){ 350 | expect(result).toBe(true); 351 | done(); 352 | }); 353 | }); 354 | it("getOrgVariable2",function(done){ 355 | TestCases.getOrgVariable(TestSpec.orgVariable2,function(result){ 356 | expect(result).toBe(true); 357 | done(); 358 | }); 359 | }); 360 | it("getMultipleOrgvariable",function(done){ 361 | TestCases.getMultipleOrgvariable(TestSpec.multipleOrgVariable,function(result){ 362 | expect(result).toBe(true); 363 | done(); 364 | }); 365 | }); 366 | it("checkHtttpGetRequst",function(done){ 367 | TestCases.checkHttpGetRequest(TestSpec.getUrl,function(result){ 368 | expect(result).toBe(true); 369 | done(); 370 | }); 371 | }); 372 | it("checkHtttpPostRequst",function(done){ 373 | TestCases.checkHttpPostRequest(TestSpec.postUrl,function(result){ 374 | expect(result).toBe(true); 375 | done(); 376 | }); 377 | }); 378 | it("checkHtttpPutRequst",function(done){ 379 | TestCases.checkHttpPutRequest(TestSpec.putUrl,function(result){ 380 | expect(result).toBe(true); 381 | done(); 382 | }); 383 | }); 384 | it("checkHtttpPatchRequst",function(done){ 385 | TestCases.checkHttpPatchRequest(TestSpec.patchUrl,function(result){ 386 | expect(result).toBe(true); 387 | done(); 388 | }); 389 | }); 390 | it("checkHtttpDeleteRequst",function(done){ 391 | TestCases.checkHttpDeleteRequest(TestSpec.deleteUrl,function(result){ 392 | expect(result).toBe(true); 393 | done(); 394 | }); 395 | }); 396 | it("getFields",function(done){ 397 | TestCases.getFields("Leads",function(result){ 398 | expect(result).toBe(true); 399 | done(); 400 | }); 401 | }); 402 | it("getModules",function(done){ 403 | TestCases.getModules("Leads",function(result){ 404 | expect(result).toBe(true); 405 | done(); 406 | }); 407 | }); 408 | it("getAssignmentRules",function(done){ 409 | TestCases.getAssignmentRules("Leads",function(result){ 410 | expect(result).toBe(true); 411 | done(); 412 | }); 413 | }); 414 | // ---------- 415 | it("getCurrentUser",function(done){ 416 | TestCases.getCurrentUser(function(result){ 417 | expect(result).toBe(true); 418 | done(); 419 | }); 420 | }); 421 | it("getOrgInfo",function(done){ 422 | TestCases.getOrgInfo(function(result){ 423 | expect(result).toBe(true); 424 | done(); 425 | }) 426 | }); 427 | it("searchRecord",function(done){ 428 | TestCases.Search("Leads","email","anandkumar.j@zohocorp.com",function(result){ 429 | expect(result).toBe(true); 430 | done(); 431 | }); 432 | }); 433 | it("coql",function(done){ 434 | TestCases.coql("Leads",function(result){ 435 | expect(result).toBe(true); 436 | done(); 437 | }); 438 | }); 439 | 440 | it("customViews",function(done){ 441 | TestCases.getCustomViews(undefined,function(result){ 442 | expect(result).toBe(true); 443 | done(); 444 | }); 445 | }); 446 | 447 | it("customView",function(done){ 448 | TestCases.getCustomViews(TestSpec.customViewID,function(result){ 449 | expect(result).toBe(true); 450 | done(); 451 | }); 452 | }); 453 | 454 | it("getLayouts",function(done){ 455 | TestCases.getLayout(undefined,function(result){ 456 | expect(result).toBe(true); 457 | done(); 458 | }); 459 | }); 460 | 461 | it("getLayout",function(done){ 462 | TestCases.getLayout(TestSpec.layoutID,function(result){ 463 | expect(result).toBe(true); 464 | done(); 465 | }); 466 | }); 467 | 468 | it("getRelatedList",function(done){ 469 | TestCases.getRelatedList(undefined,function(result){ 470 | expect(result).toBe(true); 471 | done(); 472 | }); 473 | }); 474 | 475 | it("getRelatedLists",function(done){ 476 | TestCases.getRelatedList(TestSpec.relatedID,function(result){ 477 | expect(result).toBe(true); 478 | done(); 479 | }); 480 | }); 481 | 482 | 483 | 484 | 485 | 486 | 487 | it("invokeConnectorWithoutDynamic",function(done){ 488 | TestCases.invokeConnectorWithoutDynamic(TestSpec.connectorWithoutDynamic,{},function(result){ 489 | expect(result).toBe(true); 490 | done(); 491 | }); 492 | }); 493 | it("invokeConnectorWithoutDynamicValue",function(done){ 494 | TestCases.invokeConnectorwithDynamic(TestSpec.connectorWithDynamic,{module:TestSpec.module,recordID:TestSpec.recordID},function(result){ 495 | expect(result).toBe(true); 496 | done(); 497 | }); 498 | }); 499 | 500 | /* 501 | * Insert a new Record into the system 502 | */ 503 | it("Insert Lead", function(done) 504 | { 505 | TestCases.insertRecord("Leads",TestSpec.recordData,function(result,recordID){ 506 | TestSpec.recordID = recordID; 507 | expect(result).toBe(true); 508 | done(); 509 | }); 510 | }); 511 | /* 512 | * attach File 513 | */ 514 | it("attachFile", function(done) 515 | { 516 | var content = {hello: "world"}; 517 | var blob = new Blob([JSON.stringify(content, null, 2)], {type : 'application/json'}); 518 | TestCases.attachFile("Leads",TestSpec.recordID,blob,function(result){ 519 | expect(result).toBe(true); 520 | done(); 521 | }); 522 | }); 523 | }); 524 | -------------------------------------------------------------------------------- /test/html/MultipleWindowTesting.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 180 | 181 | 182 | 183 | 184 | Opening records 185 |
      186 | 187 |
    • 1475615000002057593
    • 188 |
    • 1475615000002057592
    • 189 |
    • 1475615000002057591
    • 190 |
    • 1475615000002057590
    • 191 |
    • 1475615000002057589
    • 192 | 193 |
    194 | Waiting for Record 195 |
    196 |
    197 |
    198 |
    199 | 200 | 201 | 202 | 203 | 414 |
    -------------------------------------------------------- 415 | 416 | --------------------------------------------------------------------------------