├── 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 |
9 |
--------------------------------------------------------------------------------
/jaguarjs-jsdoc/tmpl/mainpage.tmpl:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
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 | [](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 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
14 | -
15 |
16 |
17 |
18 | static
19 |
20 |
21 |
22 |
25 | Members
26 |
29 |
30 |
34 |
35 |
36 |
39 | Typedefs
40 |
43 |
44 |
48 |
49 |
50 |
53 | Methods
54 |
58 |
59 |
63 |
64 |
65 |
68 | Events
69 |
72 |
73 |
77 |
78 |
79 |
80 |
81 |
--------------------------------------------------------------------------------
/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
32 |
33 |
34 |
35 | - Author:
36 | -
37 |
40 |
41 |
42 |
43 |
44 | - Copyright:
45 |
46 |
47 |
48 |
49 | - License:
50 |
51 |
52 |
53 |
54 | - Default Value:
55 |
56 |
57 |
58 |
59 | - Tutorials:
60 | -
61 |
64 |
65 |
66 |
67 |
68 | - See:
69 | -
70 |
73 |
74 |
75 |
76 |
77 | - TODO
78 | -
79 |
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 | | Name |
51 | Type |
52 | Description |
53 |
54 |
55 |
56 |
63 |
64 | |
65 |
66 |
69 |
70 | |
71 |
74 | |
75 |
76 |
77 | |
78 |
79 |
80 |
81 |
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 |
42 |
43 |
44 |
45 | This:
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 | Fires:
57 |
60 |
61 |
62 |
63 | Listens to Events:
64 |
67 |
68 |
69 |
70 | Listeners of This Event:
71 |
74 |
75 |
76 |
77 | Throws:
78 | 1) { ?>
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 | | Name |
46 |
47 |
48 | Type |
49 |
50 |
51 | Argument |
52 |
53 |
54 |
55 | Default |
56 |
57 |
58 | Description |
59 |
60 |
61 |
62 |
63 |
68 |
69 |
70 |
71 | |
72 |
73 |
74 |
75 |
76 |
77 |
78 | |
79 |
80 |
81 |
82 |
83 | <optional>
84 |
85 |
86 |
87 | <nullable>
88 |
89 | |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 | |
98 |
99 |
100 |
101 | Properties
102 | |
103 |
104 |
105 |
106 |
107 |
--------------------------------------------------------------------------------
/jaguarjs-jsdoc/tmpl/params.tmpl:
--------------------------------------------------------------------------------
1 |
40 |
41 |
42 |
43 |
44 |
45 | | Name |
46 |
47 |
48 | Type |
49 |
50 |
51 | Default |
52 |
53 |
54 | Description |
55 |
56 |
57 |
58 |
59 |
64 |
65 |
66 |
67 | |
68 |
69 |
70 |
71 |
72 |
73 |
74 | |
75 |
76 |
77 |
78 |
79 |
80 |
81 | |
82 |
83 |
84 |
85 |
86 |
87 | optional
88 |
89 |
90 | nullable
91 |
92 |
93 |
94 | repeatable
95 |
96 |
97 |
98 |
99 | |
100 |
101 |
102 |
103 |
104 |
--------------------------------------------------------------------------------
/jaguarjs-jsdoc/tmpl/layout.tmpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
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 |
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 |
55 |
56 |
57 |
58 | Mixes In
59 |
60 |
63 |
64 |
65 |
66 | Requires
67 |
68 |
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 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
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",/^[^]+/],["dec",/^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^
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 |