qcobjects-sdk 2.3.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/.eslintrc.json +23 -0
  2. package/.github/FUNDING.yml +12 -0
  3. package/.github/ISSUE_TEMPLATE/bug_report.md +38 -0
  4. package/.github/ISSUE_TEMPLATE/custom.md +10 -0
  5. package/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  6. package/.github/ISSUE_TEMPLATE/issue-template.md +33 -0
  7. package/.github/workflows/npmpublish.yml +36 -0
  8. package/CHANGELOG.md +47 -0
  9. package/CNAME +1 -0
  10. package/QCObjects-SDK.js +95 -0
  11. package/README.md +864 -0
  12. package/README.rst +398 -0
  13. package/VERSION +1 -0
  14. package/_config.yml +1 -0
  15. package/css/base-modal.css +43 -0
  16. package/css/basic-layout-embedded-nav.css +14 -0
  17. package/css/basic-layout.css +76 -0
  18. package/css/components/horizontal-list.css +64 -0
  19. package/css/components/list.css +57 -0
  20. package/css/components/splashscreen.css +111 -0
  21. package/css/modal.css +46 -0
  22. package/demo-tests/test-component-grid.html +50 -0
  23. package/demo-tests/test-component-list.html +40 -0
  24. package/demo-tests/test-component-notifications.html +30 -0
  25. package/demo-tests/test-component-slider.html +52 -0
  26. package/favicon.ico +0 -0
  27. package/index.rst +398 -0
  28. package/js/org.qcobjects.cloud.auth.session.data.js +72 -0
  29. package/js/org.qcobjects.cloud.auth.session.usertoken.js +95 -0
  30. package/js/org.qcobjects.components.grid.js +59 -0
  31. package/js/org.qcobjects.components.js +226 -0
  32. package/js/org.qcobjects.components.list.js +48 -0
  33. package/js/org.qcobjects.components.notifications.js +168 -0
  34. package/js/org.qcobjects.components.slider.js +194 -0
  35. package/js/org.qcobjects.components.splashscreen.js +565 -0
  36. package/js/org.qcobjects.controllers.form.js +196 -0
  37. package/js/org.qcobjects.controllers.grid.js +268 -0
  38. package/js/org.qcobjects.controllers.js +10 -0
  39. package/js/org.qcobjects.controllers.list.js +229 -0
  40. package/js/org.qcobjects.controllers.slider.js +132 -0
  41. package/js/org.qcobjects.controllers.swagger.js +77 -0
  42. package/js/org.qcobjects.effects.js +262 -0
  43. package/js/org.qcobjects.i18n_messages.js +55 -0
  44. package/js/org.qcobjects.modal.controllers.js +42 -0
  45. package/js/org.qcobjects.modal.effects.js +48 -0
  46. package/js/org.qcobjects.models.js +40 -0
  47. package/js/org.qcobjects.tools.canvas.js +52 -0
  48. package/js/org.qcobjects.tools.js +59 -0
  49. package/js/org.qcobjects.tools.layouts.js +71 -0
  50. package/js/org.qcobjects.views.js +37 -0
  51. package/package.json +48 -0
  52. package/spec/support/jasmine.json +16 -0
  53. package/spec/testsSpec.js +9 -0
  54. package/templates/components/modalyoulose.tpl.html +3 -0
  55. package/templates/components/modalyouwin.tpl.html +4 -0
  56. package/templates/components/splashscreen.tpl.html +128 -0
  57. package/templates/components/swagger-ui.tpl.html +22 -0
@@ -0,0 +1,229 @@
1
+ /**
2
+ * QCObjects SDK 2.3
3
+ * ________________
4
+ *
5
+ * Author: Jean Machuca <correojean@gmail.com>
6
+ *
7
+ * Cross Browser Javascript Framework for MVC Patterns
8
+ * QuickCorp/QCObjects is licensed under the
9
+ * GNU Lesser General Public License v3.0
10
+ * [LICENSE] (https://github.com/QuickCorp/QCObjects/blob/master/LICENSE.txt)
11
+ *
12
+ * Permissions of this copyleft license are conditioned on making available
13
+ * complete source code of licensed works and modifications under the same
14
+ * license or the GNU GPLv3. Copyright and license notices must be preserved.
15
+ * Contributors provide an express grant of patent rights. However, a larger
16
+ * work using the licensed work through interfaces provided by the licensed
17
+ * work may be distributed under different terms and without source code for
18
+ * the larger work.
19
+ *
20
+ * Copyright (C) 2015 Jean Machuca,<correojean@gmail.com>
21
+ *
22
+ * Everyone is permitted to copy and distribute verbatim copies of this
23
+ * license document, but changing it is not allowed.
24
+ */
25
+ (function() {
26
+ "use strict";
27
+ Package("org.qcobjects.controllers.list",[
28
+ Class("ListController",Controller,{
29
+ dependencies:[],
30
+ component:null,
31
+ _new_:function (o){
32
+ this.__new__(o);
33
+ var controller=this;
34
+ controller._componentRoot = (controller.component.shadowed)?(controller.component.shadowRoot):(controller.component.body);
35
+
36
+ controller.labelField = controller.component.body.getAttribute("label-field");
37
+ controller.valueField = controller.component.body.getAttribute("value-field");
38
+ controller.rows=controller.component.body.getAttribute("rows");
39
+ controller.rows=(controller.rows !== null)?(controller.rows):(controller.component.rows);
40
+ controller.cols=1;
41
+ logger.debug("ListController INIT");
42
+ },
43
+ getPageIndex: function (page, totalPage, totalElements) {
44
+ page = new Number(page);
45
+ page = (page>0)?(page-1):(0);
46
+ totalPage = new Number(totalPage);
47
+ totalElements = new Number(totalElements);
48
+ return [totalElements*page/ totalPage, (totalElements*page/ totalPage) + totalElements/totalPage];
49
+ },
50
+ addSubcomponents:function (){
51
+ var controller = this;
52
+ controller.component.subcomponents = [];
53
+ var layout = controller.component.body.getAttribute("layout");
54
+ var basePath = CONFIG.get("listBasePath",CONFIG.get("remoteSDKPath"));
55
+ var cssLayout = "";
56
+ if (layout === "horizontal"){
57
+ cssLayout = `@import url("${basePath}css/components/horizontal-list.css");`;
58
+ } else {
59
+ cssLayout = `@import url("${basePath}css/components/list.css");`;
60
+ }
61
+ controller._componentRoot.innerHTML = `<style>${cssLayout}</style><ul></ul>`;
62
+ logger.debug(_DataStringify(controller.component.data));
63
+ try {
64
+ var subcomponentClass = controller.component.body.getAttribute("subcomponentClass");
65
+ if (subcomponentClass != null){
66
+ var offset;
67
+ var limit;
68
+ var pagesNumber;
69
+ var list = [...controller.component.data];
70
+ var paginateIn = controller.component.body.getAttribute("paginate-in");
71
+ paginateIn = (paginateIn !== null)?(paginateIn):("client");
72
+ if (paginateIn === "client"){
73
+ var page = controller.component.body.getAttribute("page-number");
74
+ page = (isNaN(page) || page === null)?(-1):(page);
75
+ if (page !== -1){
76
+ pagesNumber = controller.component.body.getAttribute("total-pages");
77
+ pagesNumber = (isNaN(pagesNumber))?(1):(pagesNumber);
78
+ offset = controller.getPageIndex(page, pagesNumber, list.length)[0];
79
+ limit = controller.getPageIndex(page, pagesNumber, list.length)[1];
80
+ } else {
81
+ offset = 0;
82
+ limit = list.length;
83
+ pagesNumber = 1;
84
+ }
85
+ list = list.slice(offset,limit);
86
+ } else {
87
+ offset = 0;
88
+ limit = list.length;
89
+ pagesNumber = 1;
90
+ }
91
+ list.map(
92
+ function (record,dataIndex){
93
+ try {
94
+ var _body = _DOMCreateElement("li");
95
+ record.label = record[controller.labelField];
96
+ record.value = record[controller.valueField];
97
+ var subcomponent = New(ClassFactory(subcomponentClass),{
98
+ data:{
99
+ label:record[controller.labelField],
100
+ value:record[controller.valueField],
101
+ __dataIndex:dataIndex,
102
+ __page:page,
103
+ __totalPages:pagesNumber,
104
+ __limit:limit,
105
+ __offset:offset
106
+ },
107
+ templateURI:ComponentURI({
108
+ "COMPONENTS_BASE_PATH":CONFIG.get("componentsBasePath"),
109
+ "COMPONENT_NAME":ClassFactory(subcomponentClass).name,
110
+ "TPLEXTENSION":CONFIG.get("tplextension"),
111
+ "TPL_SOURCE":ClassFactory(subcomponentClass).tplsource
112
+ }),
113
+ body:_body,
114
+ template:ClassFactory(subcomponentClass).template
115
+ });
116
+ subcomponent.done = controller.component.done.bind(subcomponent);
117
+ try {
118
+ if (subcomponent){
119
+ subcomponent.data.__dataIndex = dataIndex;
120
+ if (controller.component.data.hasOwnProperty.call(controller.component.data,"length")){
121
+ subcomponent.data.__dataLength = controller.component.data.length;
122
+ }
123
+ logger.debug("adding subcomponent to body");
124
+ controller._componentRoot.subelements("ul").map(ul=>ul.append(subcomponent));
125
+ try {
126
+ controller.component.subcomponents.push(subcomponent);
127
+ }catch (e){
128
+ logger.debug("ERROR LOADING SUBCOMPONENT IN DATAGRID");
129
+ }
130
+ } else {
131
+ logger.debug("ERROR LOADING SUBCOMPONENT IN DATAGRID");
132
+ }
133
+ }catch (e){
134
+ logger.debug("ERROR LOADING SUBCOMPONENT IN DATAGRID");
135
+ }
136
+
137
+ } catch (e) {
138
+ logger.debug("ERROR LOADING SUBCOMPONENT IN DATAGRID");
139
+ }
140
+ }
141
+ );
142
+ } else {
143
+ logger.debug("NO SUBCOMPONENT CLASS IN COMPONENT");
144
+ }
145
+
146
+ } catch (e){
147
+ logger.debug("No data for component");
148
+ }
149
+ },
150
+ cssGrid: function (){
151
+ var controller=this;
152
+ var component = controller.component;
153
+ var _componentRoot = (component.shadowed)?(component.shadowRoot):(component.body);
154
+ if (typeof controller.rows !== "undefined" && typeof controller.cols !== "undefined"){
155
+ var s = _DOMCreateElement("style");
156
+ var templateRows = "auto ".repeat(controller.rows);
157
+ var templateCols = "auto ".repeat(controller.cols);
158
+ var className = "grid"+this.__instanceID.toString();
159
+ s.innerHTML = "."+className+" { \
160
+ display: grid; \
161
+ grid-template-rows: "+templateRows+"; \
162
+ grid-template-columns: "+templateCols+"; \
163
+ margin:0 auto; \
164
+ }";
165
+ _componentRoot.append(s);
166
+ _componentRoot.classList.add(className);
167
+ }
168
+ },
169
+ done:function (){
170
+ var controller = this;
171
+ controller.cssGrid();
172
+
173
+ var componentInstance = controller.component;
174
+ logger.debug("ListController DONE");
175
+ var serviceClass = controller.component.body.getAttribute("serviceClass");
176
+ if (serviceClass != null){
177
+ var offset;
178
+ var limit;
179
+ var paginateIn = componentInstance.body.getAttribute("paginate-in");
180
+ paginateIn = (paginateIn !== null)?(paginateIn):("client");
181
+ if (paginateIn === "server"){
182
+ var page = componentInstance.body.getAttribute("page-number");
183
+ page = (isNaN(page) || page === null)?(-1):(page);
184
+ var pagesNumber;
185
+ if (page !== -1){
186
+ var serverDataCount = (controller.component.body.getAttribute("server-data-count")!==null)?(controller.component.body.getAttribute("server-data-count")):(1);
187
+ pagesNumber = controller.component.body.getAttribute("total-pages");
188
+ pagesNumber = (isNaN(pagesNumber))?(1):(pagesNumber);
189
+ offset = controller.getPageIndex(page, pagesNumber, serverDataCount)[0];
190
+ limit = controller.getPageIndex(page, pagesNumber, serverDataCount)[1];
191
+ // send params in jsonrpc 2.0 style
192
+ componentInstance.serviceData = (typeof componentInstance.serviceData !== "undefined")?(componentInstance.serviceData):({});
193
+ componentInstance.serviceData.params = (typeof componentInstance.serviceData.params !== "undefined")?(componentInstance.serviceData.params):({});
194
+ componentInstance.serviceData.params.offset = offset;
195
+ componentInstance.serviceData.params.limit = limit;
196
+ }
197
+ }
198
+
199
+ serviceLoader(New(ClassFactory(serviceClass),{
200
+ data:componentInstance.serviceData
201
+ })).then(
202
+ (successfulResponse)=>{
203
+ // This will show the service response as a plain text
204
+ logger.debug("DONE SERVICE COMPONENT");
205
+ successfulResponse.service.JSONresponse = JSON.parse(successfulResponse.service.template);
206
+ if (typeof successfulResponse.service.JSONresponse.result !== "undefined"){
207
+ logger.debug(_DataStringify(successfulResponse.service.JSONresponse.result));
208
+ componentInstance.data = successfulResponse.service.JSONresponse.result;
209
+ } else {
210
+ componentInstance.data = successfulResponse.service.JSONresponse;
211
+ }
212
+ controller.addSubcomponents();
213
+
214
+ },
215
+ (failedResponse)=>{
216
+ logger.debug(failedResponse);
217
+ }).catch ((e)=>{
218
+ logger.debug("Something went wrong when calling the service from: "+serviceClass);
219
+ logger.debug(e.message);
220
+ });
221
+
222
+ }
223
+
224
+ }
225
+
226
+ })
227
+ ]);
228
+
229
+ }).call(null);
@@ -0,0 +1,132 @@
1
+ /**
2
+ * QCObjects SDK 2.3
3
+ * ________________
4
+ *
5
+ * Author: Jean Machuca <correojean@gmail.com>
6
+ *
7
+ * Cross Browser Javascript Framework for MVC Patterns
8
+ * QuickCorp/QCObjects is licensed under the
9
+ * GNU Lesser General Public License v3.0
10
+ * [LICENSE] (https://github.com/QuickCorp/QCObjects/blob/master/LICENSE.txt)
11
+ *
12
+ * Permissions of this copyleft license are conditioned on making available
13
+ * complete source code of licensed works and modifications under the same
14
+ * license or the GNU GPLv3. Copyright and license notices must be preserved.
15
+ * Contributors provide an express grant of patent rights. However, a larger
16
+ * work using the licensed work through interfaces provided by the licensed
17
+ * work may be distributed under different terms and without source code for
18
+ * the larger work.
19
+ *
20
+ * Copyright (C) 2015 Jean Machuca,<correojean@gmail.com>
21
+ *
22
+ * Everyone is permitted to copy and distribute verbatim copies of this
23
+ * license document, but changing it is not allowed.
24
+ */
25
+ (function() {
26
+ "use strict";
27
+ Package("org.qcobjects.controllers.slider",[
28
+ Class("SliderController",Controller,{
29
+ dependencies:[],
30
+ component:null,
31
+ slideIndex:0,
32
+ duration:7100,
33
+ interval: null,
34
+ sliderHandlerName: null,
35
+ _new_:function (o){
36
+ this.__new__(o);
37
+ var controller=this;
38
+ var component = controller.component;
39
+ controller._componentRoot = (component.shadowed)?(component.shadowRoot):(component.body);
40
+ //TODO: Implement
41
+ controller.sliderHandlerName = "slider_"+controller.component.__instanceID.toString();
42
+ global.set(controller.sliderHandlerName,this);
43
+ },
44
+ stop: function (){
45
+ if (this.interval != null){
46
+ clearInterval(this.interval);
47
+ }
48
+ },
49
+ plusSlidesAndStop: function (n){
50
+ this.stop();
51
+ this.plusSlides(n);
52
+ },
53
+ plusSlides: function (n) {
54
+ this.showSlides(this.slideIndex += n);
55
+ },
56
+ currentSlide: function (n) {
57
+ this.stop();
58
+ this.showSlides(this.slideIndex = n);
59
+ },
60
+ automate: function (){
61
+ var controller = this;
62
+ controller.interval = setInterval(function (){
63
+ controller.plusSlides(1);
64
+ },controller.duration);
65
+ },
66
+ showSlides: function (n) {
67
+ var controller = this;
68
+ var slides = controller._componentRoot.subelements(".qcoSlides");
69
+ var dots = controller._componentRoot.subelements(".qcoSlider__dots--dot");
70
+
71
+ if (n > (slides.length-1)) {
72
+ controller.slideIndex = 0;
73
+ }
74
+ if (n < 0) {
75
+ controller.slideIndex = 0;
76
+ }
77
+ slides.map((slide)=>{
78
+ Fade.apply(slide,1,0);
79
+ });
80
+ dots.map((dot)=>{
81
+ dot.classList.remove("active");
82
+ });
83
+ try {
84
+ dots[controller.slideIndex].classList.add("active");
85
+ }catch (e){
86
+ logger.debug("Something went wrong when trying to activate a slide");
87
+ logger.debug(e.message);
88
+ }
89
+ setTimeout(function (){
90
+ slides.map((slide)=>{
91
+ slide.style.display="none";
92
+ });
93
+ try {
94
+ slides[controller.slideIndex].style.display = "block";
95
+ Fade.apply(slides[controller.slideIndex],0,1);
96
+
97
+ }catch (e){
98
+ logger.debug("Something went wrong when trying to show a slide");
99
+ logger.debug(e.message);
100
+ }
101
+ },700);
102
+ },
103
+ fillDots: function (){
104
+ var controller = this;
105
+ var slides = controller._componentRoot.subelements(".qcoSlides");
106
+ slides.map((slide,index)=>{
107
+ var dotHTML = document.createElement("span");
108
+ var dotContent = `<span class="qcoSlider__dots--dot" onclick="global.get('${controller.sliderHandlerName}').currentSlide(${index})"></span>`;
109
+ dotHTML.innerHTML = dotContent;
110
+ controller._componentRoot.subelements(".qcoSlider__dots")[0].append(dotHTML);
111
+ });
112
+
113
+ },
114
+ done: function (){
115
+ var controller = this;
116
+ var slides = controller._componentRoot.subelements(".qcoSlides");
117
+ slides.map((slide)=>{
118
+ slide.style.display="none";
119
+ });
120
+ setTimeout(function (){
121
+ controller.fillDots();
122
+ controller.slideIndex = 0;
123
+ controller.showSlides(this.slideIndex);
124
+ controller.automate();
125
+ },3000);
126
+
127
+ }
128
+ })
129
+
130
+ ]);
131
+
132
+ }).call(null);
@@ -0,0 +1,77 @@
1
+ /**
2
+ * QCObjects SDK 2.3
3
+ * ________________
4
+ *
5
+ * Author: Jean Machuca <correojean@gmail.com>
6
+ *
7
+ * Cross Browser Javascript Framework for MVC Patterns
8
+ * QuickCorp/QCObjects is licensed under the
9
+ * GNU Lesser General Public License v3.0
10
+ * [LICENSE] (https://github.com/QuickCorp/QCObjects/blob/master/LICENSE.txt)
11
+ *
12
+ * Permissions of this copyleft license are conditioned on making available
13
+ * complete source code of licensed works and modifications under the same
14
+ * license or the GNU GPLv3. Copyright and license notices must be preserved.
15
+ * Contributors provide an express grant of patent rights. However, a larger
16
+ * work using the licensed work through interfaces provided by the licensed
17
+ * work may be distributed under different terms and without source code for
18
+ * the larger work.
19
+ *
20
+ * Copyright (C) 2015 Jean Machuca,<correojean@gmail.com>
21
+ *
22
+ * Everyone is permitted to copy and distribute verbatim copies of this
23
+ * license document, but changing it is not allowed.
24
+ */
25
+ (function() {
26
+ "use strict";
27
+ Package("org.qcobjects.controllers.swagger",[
28
+ Class("SwaggerUIController",Controller,{
29
+ dependencies:[],
30
+ component:null,
31
+ startSwaggerUI: function (){
32
+ // Begin Swagger UI call region
33
+ if (typeof SwaggerUIBundle !== "undefined"){
34
+ /* eslint-disable no-undef */
35
+ const ui = SwaggerUIBundle({
36
+ url: CONFIG.get("swagger-ui-url","https://petstore.swagger.io/v2/swagger.json"),
37
+ dom_id: "#"+CONFIG.get("swagger-ui-dom_id","swagger-ui"),
38
+ deepLinking: true,
39
+ presets: [
40
+ SwaggerUIBundle.presets.apis,
41
+ SwaggerUIStandalonePreset
42
+ ],
43
+ plugins: [
44
+ SwaggerUIBundle.plugins.DownloadUrl
45
+ ],
46
+ layout: "StandaloneLayout"
47
+ });
48
+ // End Swagger UI call region
49
+ window.ui = ui;
50
+ }
51
+
52
+ },
53
+ done: function (){
54
+ var controller = this;
55
+ controller.component.body.innerHTML = "<div id=\""+CONFIG.get("swagger-ui-dom_id","swagger-ui")+"\"></div>";
56
+ var swaggerUIPackagePath = CONFIG.get("swagger-ui-package-path","node_modules/swagger-ui-dist/");
57
+
58
+ this.dependencies.push(New(SourceJS,{
59
+ url:swaggerUIPackagePath+"swagger-ui-standalone-preset.js",
60
+ external:CONFIG.get("swagger-ui-external",false)
61
+ }));
62
+ this.dependencies.push(New(SourceCSS,{
63
+ url:swaggerUIPackagePath+"swagger-ui.css",
64
+ external:CONFIG.get("swagger-ui-external",false)
65
+ }));
66
+ this.dependencies.push(New(SourceJS,{
67
+ url:swaggerUIPackagePath+"swagger-ui-bundle.js",
68
+ external:CONFIG.get("swagger-ui-external",false),
69
+ done:function (){
70
+ controller.startSwaggerUI();
71
+ }
72
+ }));
73
+ }
74
+ })
75
+ ]);
76
+
77
+ }).call(null);
@@ -0,0 +1,262 @@
1
+ /**
2
+ * QCObjects SDK 2.3
3
+ * ________________
4
+ *
5
+ * Author: Jean Machuca <correojean@gmail.com>
6
+ *
7
+ * Cross Browser Javascript Framework for MVC Patterns
8
+ * QuickCorp/QCObjects is licensed under the
9
+ * GNU Lesser General Public License v3.0
10
+ * [LICENSE] (https://github.com/QuickCorp/QCObjects/blob/master/LICENSE.txt)
11
+ *
12
+ * Permissions of this copyleft license are conditioned on making available
13
+ * complete source code of licensed works and modifications under the same
14
+ * license or the GNU GPLv3. Copyright and license notices must be preserved.
15
+ * Contributors provide an express grant of patent rights. However, a larger
16
+ * work using the licensed work through interfaces provided by the licensed
17
+ * work may be distributed under different terms and without source code for
18
+ * the larger work.
19
+ *
20
+ * Copyright (C) 2015 Jean Machuca,<correojean@gmail.com>
21
+ *
22
+ * Everyone is permitted to copy and distribute verbatim copies of this
23
+ * license document, but changing it is not allowed.
24
+ */
25
+ "use strict";
26
+ (function() {
27
+ Package("org.qcobjects.tools.effects",[
28
+
29
+ Class("Move",Effect,{
30
+ apply: function (element, xfrom, yfrom, xto, yto){
31
+ var dx = xto-xfrom;
32
+ var dy = yto-yfrom;
33
+ element.style.transform="translate("+xfrom+"px,"+yfrom+"px)";
34
+ this.animate({
35
+ duration: this.duration,
36
+ timing(timeFraction) {
37
+ return timeFraction;
38
+ },
39
+ draw(progress) {
40
+ logger.debug("animation progress: "+progress.toString());
41
+ var y = yfrom + (progress*dy/100);
42
+ var x = xfrom + (progress*dx/100);
43
+ logger.debug("x: "+x.toString()+" y:"+y.toString());
44
+ element.style.transform="translate("+x+"px,"+y+"px)";
45
+ }
46
+ });
47
+ }
48
+ }),
49
+ Class("MoveXInFromRight",Move,{
50
+ apply: function (element){
51
+ _super_("Move","apply").call(this,element,element.width,0,0,0);
52
+ }
53
+ }),
54
+ Class("MoveXInFromLeft",Move,{
55
+ apply: function (element){
56
+ _super_("Move","apply").call(this,element,-element.width,0,0,0);
57
+ }
58
+ }),
59
+ Class("MoveYInFromBottom",Move,{
60
+ apply: function (element){
61
+ _super_("Move","apply").call(this,element,0,element.height,0,0);
62
+ }
63
+ }),
64
+ Class("MoveYInFromTop",Move,{
65
+ apply: function (element){
66
+ _super_("Move","apply").call(this,element,0,-element.height,0,0);
67
+ }
68
+ }),
69
+ Class("RotateX",Effect,{
70
+ apply: function (element, angleFrom,angleTo){
71
+ var da = angleTo-angleFrom;
72
+ this.animate({
73
+ duration: this.duration,
74
+ timing(timeFraction) {
75
+ return timeFraction;
76
+ },
77
+ draw(progress) {
78
+ logger.debug("animation progress: "+progress.toString());
79
+ var angle = Math.round(angleFrom + (progress*da/100));
80
+ logger.debug("angle: "+angle.toString());
81
+ element.style.transform= "rotate3d(1,0,0,"+angle.toString()+"deg)";
82
+ }
83
+ });
84
+ }
85
+ }),
86
+ Class("RotateY",Effect,{
87
+ apply: function (element, angleFrom,angleTo){
88
+ var da = angleTo-angleFrom;
89
+ this.animate({
90
+ duration: this.duration,
91
+ timing(timeFraction) {
92
+ return timeFraction;
93
+ },
94
+ draw(progress) {
95
+ logger.debug("animation progress: "+progress.toString());
96
+ var angle = Math.round(angleFrom + (progress*da/100));
97
+ logger.debug("angle: "+angle.toString());
98
+ element.style.transform= "rotate3d(0,1,0,"+angle.toString()+"deg)";
99
+ }
100
+ });
101
+ }
102
+ }),
103
+ Class("RotateZ",Effect,{
104
+ apply: function (element, angleFrom,angleTo){
105
+ var da = angleTo-angleFrom;
106
+ this.animate({
107
+ duration: this.duration,
108
+ timing(timeFraction) {
109
+ return timeFraction;
110
+ },
111
+ draw(progress) {
112
+ logger.debug("animation progress: "+progress.toString());
113
+ var angle = Math.round(angleFrom + (progress*da/100));
114
+ logger.debug("angle: "+angle.toString());
115
+ element.style.transform= "rotate3d(0,0,1,"+angle.toString()+"deg)";
116
+ }
117
+ });
118
+ }
119
+ }),
120
+ Class("Rotate",Effect,{
121
+ apply: function (element, angleFrom,angleTo){
122
+ var da = angleTo-angleFrom;
123
+ this.animate({
124
+ duration: this.duration,
125
+ timing(timeFraction) {
126
+ return timeFraction;
127
+ },
128
+ draw(progress) {
129
+ logger.debug("animation progress: "+progress.toString());
130
+ var angle = Math.round(angleFrom + (progress*da/100));
131
+ logger.debug("angle: "+angle.toString());
132
+ element.style.transform= "rotate3d(1,1,1,"+angle.toString()+"deg)";
133
+ }
134
+ });
135
+ }
136
+ }),
137
+ Class("Fade",Effect,{
138
+ apply: function (element, alphaFrom,alphaTo){
139
+ var da = alphaTo-alphaFrom;
140
+ this.animate({
141
+ duration: this.duration,
142
+ timing(timeFraction) {
143
+ return timeFraction;
144
+ },
145
+ draw(progress) {
146
+ logger.debug("animation progress: "+progress.toString());
147
+ var alpha = alphaFrom + (progress*da/100);
148
+ logger.debug("alpha: "+alpha.toString());
149
+ element.style.opacity= alpha.toString();
150
+ }
151
+ });
152
+ }
153
+ }),
154
+ Class("Radius",Effect,{
155
+ apply: function (element, radiusFrom,radiusTo){
156
+ var dr = radiusTo-radiusFrom;
157
+ this.animate({
158
+ duration: this.duration,
159
+ timing(timeFraction) {
160
+ return timeFraction;
161
+ },
162
+ draw(progress) {
163
+ logger.debug("animation progress: "+progress.toString());
164
+ var radius = radiusFrom + (progress*dr/100);
165
+ logger.debug("radius: "+radius.toString());
166
+ element.style.borderRadius= radius.toString()+"px";
167
+ }
168
+ });
169
+ }
170
+ }),
171
+ Class("Resize",Effect,{
172
+ apply: function (element, scaleFrom,scaleTo){
173
+ var ds = scaleTo-scaleFrom;
174
+ this.animate({
175
+ duration: this.duration,
176
+ timing(timeFraction) {
177
+ return timeFraction;
178
+ },
179
+ draw(progress) {
180
+ logger.debug("animation progress: "+progress.toString());
181
+ var scale = scaleFrom + (progress*ds/100);
182
+ logger.debug("resize: "+scale.toString());
183
+ element.style.transformOrigin="center";
184
+ element.style.transform= "scale("+scale+","+scale+")";
185
+ }
186
+ });
187
+ }
188
+ }),
189
+ Class("WipeLeft",Effect,{
190
+ apply: function (element, scaleFrom,scaleTo){
191
+ var ds = scaleTo-scaleFrom;
192
+ this.animate({
193
+ duration: this.duration,
194
+ timing(timeFraction) {
195
+ return timeFraction;
196
+ },
197
+ draw(progress) {
198
+ logger.debug("animation progress: "+progress.toString());
199
+ var scale = scaleFrom + (progress*ds/100);
200
+ logger.debug("wipe: "+scale.toString());
201
+ element.style.transformOrigin="right";
202
+ element.style.transform= "scaleX("+scale+")";
203
+ }
204
+ });
205
+ }
206
+ }),
207
+ Class("WipeRight",Effect,{
208
+ apply: function (element, scaleFrom,scaleTo){
209
+ var ds = scaleTo-scaleFrom;
210
+ this.animate({
211
+ duration: this.duration,
212
+ timing(timeFraction) {
213
+ return timeFraction;
214
+ },
215
+ draw(progress) {
216
+ logger.debug("animation progress: "+progress.toString());
217
+ var scale = scaleFrom + (progress*ds/100);
218
+ logger.debug("wipe: "+scale.toString());
219
+ element.style.transformOrigin="left";
220
+ element.style.transform= "scaleX("+scale+")";
221
+ }
222
+ });
223
+ }
224
+ }),
225
+ Class("WipeUp",Effect,{
226
+ apply: function (element, scaleFrom,scaleTo){
227
+ var ds = scaleTo-scaleFrom;
228
+ this.animate({
229
+ duration: this.duration,
230
+ timing(timeFraction) {
231
+ return timeFraction;
232
+ },
233
+ draw(progress) {
234
+ logger.debug("animation progress: "+progress.toString());
235
+ var scale = scaleFrom + (progress*ds/100);
236
+ logger.debug("wipe: "+scale.toString());
237
+ element.style.transformOrigin="bottom";
238
+ element.style.transform= "scaleY("+scale+")";
239
+ }
240
+ });
241
+ }
242
+ }),
243
+ Class("WipeDown",Effect,{
244
+ apply: function (element, scaleFrom,scaleTo){
245
+ var ds = scaleTo-scaleFrom;
246
+ this.animate({
247
+ duration: this.duration,
248
+ timing(timeFraction) {
249
+ return timeFraction;
250
+ },
251
+ draw(progress) {
252
+ logger.debug("animation progress: "+progress.toString());
253
+ var scale = scaleFrom + (progress*ds/100);
254
+ logger.debug("wipe: "+scale.toString());
255
+ element.style.transformOrigin="top";
256
+ element.style.transform= "scaleY("+scale+")";
257
+ }
258
+ });
259
+ }
260
+ })
261
+ ]);
262
+ }).call(null);