cronapp-framework-js 2.8.27 → 2.8.31

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 (66) hide show
  1. package/components/crn-carousel.components.json +1 -1
  2. package/components/crn-chart.components.json +1 -0
  3. package/components/crn-cron-grid.components.json +24 -34
  4. package/components/crn-dynamic-menu.components.json +1 -0
  5. package/components/crn-eight-four-container.components.json +2 -2
  6. package/components/crn-enterprise-autocomplete.components.json +8 -0
  7. package/components/crn-enterprise-combobox-multiple.components.json +7 -0
  8. package/components/crn-enterprise-combobox.components.json +7 -0
  9. package/components/crn-enterprise-dynamic-autocomplete.components.json +35 -27
  10. package/components/crn-enterprise-dynamic-combobox.components.json +7 -0
  11. package/components/crn-four-eight-container.components.json +2 -2
  12. package/components/crn-one-container.components.json +2 -2
  13. package/components/crn-ordered-sub-list.components.json +1 -2
  14. package/components/crn-radioOption.components.json +8 -0
  15. package/components/crn-textarea.components.json +8 -0
  16. package/components/crn-textinput.components.json +8 -0
  17. package/components/crn-textinputbutton.components.json +8 -0
  18. package/components/crn-textinputicon.components.json +8 -0
  19. package/components/crn-three-container.components.json +2 -2
  20. package/components/crn-trhee-six-three-container.components.json +2 -2
  21. package/components/crn-two-container.components.json +2 -2
  22. package/components/crn-vertical-container.components.json +3 -3
  23. package/components/cron-breadcrumbs.components.json +64 -0
  24. package/components/templates/carousel.template.html +3 -3
  25. package/components/templates/cron-autocomplete.designtime.html +33 -1
  26. package/components/templates/cron-breadcrumbs.designtime.html +11 -0
  27. package/components/templates/cron-breadcrumbs.template.html +3 -0
  28. package/components/templates/grid-vertical.template.html +2 -2
  29. package/components/templates/navbar.template.html +5 -5
  30. package/components/templates/tabs.template.html +4 -4
  31. package/components/templates/textinputbutton.template.html +11 -9
  32. package/css/app.css +7 -0
  33. package/css/modalTemplate.css +21 -9
  34. package/css/themes/custom/material/custom-material.css +0 -4
  35. package/dist/components/templates/carousel.template.html +1 -1
  36. package/dist/components/templates/cron-autocomplete.designtime.html +26 -1
  37. package/dist/components/templates/cron-breadcrumbs.designtime.html +1 -0
  38. package/dist/components/templates/cron-breadcrumbs.template.html +1 -0
  39. package/dist/components/templates/grid-vertical.template.html +1 -1
  40. package/dist/components/templates/navbar.template.html +1 -1
  41. package/dist/components/templates/tabs.template.html +1 -1
  42. package/dist/components/templates/textinputbutton.template.html +1 -1
  43. package/dist/css/app.css +1 -1
  44. package/dist/css/modalTemplate.css +1 -1
  45. package/dist/css/themes/custom/material/custom-material.css +1 -1
  46. package/dist/img/barcode.png +0 -0
  47. package/dist/img/cron-icon/cron-breadrumb.svg +1 -0
  48. package/dist/img/cronGrid.png +0 -0
  49. package/dist/img/cronRichEditor.png +0 -0
  50. package/dist/img/cronapp-logo-login.png +0 -0
  51. package/dist/img/logo.png +0 -0
  52. package/dist/img/placehold-100x100.png +0 -0
  53. package/dist/img/placehold-900x500.png +0 -0
  54. package/dist/img/qrcode.png +0 -0
  55. package/dist/img/selectFile.png +0 -0
  56. package/dist/img/switch.png +0 -0
  57. package/dist/js/app.js +1 -1
  58. package/dist/js/controllers.js +1 -1
  59. package/dist/js/directives.js +1 -1
  60. package/dist/js/reports/reports.service.js +1 -1
  61. package/img/cron-icon/cron-breadrumb.svg +638 -0
  62. package/js/app.js +30 -15
  63. package/js/controllers.js +2 -15
  64. package/js/directives.js +157 -11
  65. package/js/reports/reports.service.js +3 -0
  66. package/package.json +1 -1
package/js/app.js CHANGED
@@ -212,7 +212,7 @@ var app = (function() {
212
212
  $scope.UploadService = UploadService;
213
213
  $scope.$state = $state;
214
214
 
215
- app.registerEventsCronapi($scope, $translate);
215
+ app.registerEventsCronapi($scope, $translate, $location);
216
216
 
217
217
  $("form").kendoValidator({
218
218
  errorTemplate: '<span class="k-widget k-tooltip-validation k-x-invalid-msg-block">#=message#</span>',
@@ -233,18 +233,6 @@ var app = (function() {
233
233
  }
234
234
  }
235
235
 
236
- //Components personalization jquery
237
- $scope.registerComponentScripts = function() {
238
- //carousel slider
239
- $('.carousel-indicators li').on('click', function() {
240
- var currentCarousel = '#' + $(this).parent().parent().parent().attr('id');
241
- var index = $(currentCarousel + ' .carousel-indicators li').index(this);
242
- $(currentCarousel + ' #carousel-example-generic').carousel(index);
243
- });
244
- };
245
-
246
- $scope.registerComponentScripts();
247
-
248
236
  try {
249
237
  var contextAfterPageController = $controller('AfterPageController', { $scope: $scope });
250
238
  app.copyContext(contextAfterPageController, this, 'AfterPageController');
@@ -333,6 +321,7 @@ var app = (function() {
333
321
  }
334
322
 
335
323
  $rootScope.renderFinished = true;
324
+ registerComponentScripts();
336
325
  });
337
326
  };
338
327
 
@@ -365,7 +354,23 @@ app.bindScope = function($scope, obj) {
365
354
  return newObj;
366
355
  };
367
356
 
368
- app.registerEventsCronapi = function($scope, $translate) {
357
+ app.registerEventsCronapi = function($scope, $translate, $location) {
358
+
359
+ let $stateParams = $scope.params || {};
360
+ let queryStringParams = $location && $location.search() || {};
361
+ $scope.params = {};
362
+
363
+ let makeCopy = (from, to) => {
364
+ for (let key in from) {
365
+ if (from.hasOwnProperty(key)) {
366
+ to[key] = from[key];
367
+ }
368
+ }
369
+ };
370
+ makeCopy($stateParams, $scope.params);
371
+ makeCopy(queryStringParams, $scope.params);
372
+
373
+
369
374
  for (var x in app.userEvents)
370
375
  $scope[x] = app.userEvents[x].bind($scope);
371
376
 
@@ -520,4 +525,14 @@ const keyCodeFormActions = {
520
525
  handle: (e) => !keyCodeFormActions[e.keyCode || e.which] || keyCodeFormActions[e.keyCode || e.which](e),
521
526
  13: (e) => e.preventDefault()
522
527
  };
523
- keyCodeFormActions.initialize();
528
+ keyCodeFormActions.initialize();
529
+
530
+ //Components personalization jquery
531
+ var registerComponentScripts = function() {
532
+ //carousel slider
533
+ $('.carousel-indicators li').on('click', function() {
534
+ var currentCarousel = '#' + $(this).parent().parent().parent().attr('id');
535
+ var index = $(currentCarousel + ' .carousel-indicators li').index(this);
536
+ $(currentCarousel + ' > div').carousel(index);
537
+ });
538
+ };
package/js/controllers.js CHANGED
@@ -81,7 +81,7 @@
81
81
  $scope.$http = $http;
82
82
  $scope.params = $stateParams;
83
83
  $scope.$state = $state;
84
- app.registerEventsCronapi($scope, $translate);
84
+ app.registerEventsCronapi($scope, $translate, $location);
85
85
 
86
86
  $rootScope.http = $http;
87
87
  $rootScope.Notification = Notification;
@@ -91,12 +91,6 @@
91
91
  ReportService.openReport(reportName, params, config);
92
92
  };
93
93
 
94
- var queryStringParams = $location.search();
95
- for (var key in queryStringParams) {
96
- if (queryStringParams.hasOwnProperty(key)) {
97
- $scope.params[key] = queryStringParams[key];
98
- }
99
- }
100
94
  $scope.redirectToLogin = function() {
101
95
  $scope.cronapi.social.ssoLogin();
102
96
  };
@@ -250,7 +244,7 @@
250
244
  $scope.$http = $http;
251
245
  $scope.params = $stateParams;
252
246
  $scope.$state = $state;
253
- app.registerEventsCronapi($scope, $translate);
247
+ app.registerEventsCronapi($scope, $translate, $location);
254
248
 
255
249
  $rootScope.http = $http;
256
250
  $rootScope.Notification = Notification;
@@ -260,13 +254,6 @@
260
254
  ReportService.openReport(reportName, params, config);
261
255
  };
262
256
 
263
- var queryStringParams = $location.search();
264
- for (var key in queryStringParams) {
265
- if (queryStringParams.hasOwnProperty(key)) {
266
- $scope.params[key] = queryStringParams[key];
267
- }
268
- }
269
-
270
257
  $scope.message = {};
271
258
 
272
259
  $scope.selecionado = {
package/js/directives.js CHANGED
@@ -2126,7 +2126,8 @@
2126
2126
  let waitRender = setInterval(function() {
2127
2127
  let $myElement = $('#' + componentId);
2128
2128
  if ($myElement.length > 0) {
2129
- var x = angular.element($myElement);
2129
+ let $closeTdElemen = $myElement.closest('td');
2130
+ let x = angular.element($closeTdElemen || $myElement);
2130
2131
  $compile(x)(scope);
2131
2132
  clearInterval(waitRender);
2132
2133
  resolve(componentId);
@@ -3372,7 +3373,7 @@
3372
3373
  var parent = element.parent();
3373
3374
  $(parent).append('<input style="width: 100%;" '+ id + name + ' class="cronSelect"/>');
3374
3375
  var $element = $(parent).find('input.cronSelect');
3375
-
3376
+ var cronDisabled = attrs.cronDisabled ? attrs.cronDisabled : 'true';
3376
3377
  var options = await app.kendoHelper.getConfigCombobox(select, scope);
3377
3378
  options.close = attrs.ngClose ? function (){scope.$eval(attrs.ngClose)}: undefined;
3378
3379
  options.dataBound = attrs.ngDataBound ? function (){scope.$eval(attrs.ngDataBound)}: undefined;
@@ -3422,7 +3423,11 @@
3422
3423
  }
3423
3424
  };
3424
3425
  initializeAttrAndEvents();
3425
- combobox.enable(true);
3426
+ if (cronDisabled) {
3427
+ combobox.enable(false);
3428
+ } else {
3429
+ combobox.enable(true);
3430
+ }
3426
3431
 
3427
3432
  var _scope = scope;
3428
3433
  var _ngModelCtrl = ngModelCtrl;
@@ -3516,12 +3521,14 @@
3516
3521
  }
3517
3522
  },
3518
3523
  link: async function (scope, element, attrs, ngModelCtrl) {
3524
+ await cronapi.internal.skipIterationLoop();
3519
3525
  var modelGetter = $parse(attrs['ngModel']);
3520
3526
  var modelSetter = modelGetter.assign;
3521
3527
  var select = {};
3522
3528
  var self = this;
3523
3529
  var parentDS = {};
3524
3530
  var textField = null;
3531
+ var cronDisabled = attrs.cronDisabled ? attrs.cronDisabled : 'true';
3525
3532
  try {
3526
3533
  select = JSON.parse(attrs.options);
3527
3534
  parentDS = this.getActive(attrs.ngModel);
@@ -3885,7 +3892,13 @@
3885
3892
  _compileAngular(scope, combobox.ul);
3886
3893
 
3887
3894
  $(element).remove();
3888
- combobox.enable(true);
3895
+
3896
+ if(cronDisabled){
3897
+ combobox.enable(false);
3898
+ } else {
3899
+ combobox.enable(true);
3900
+ }
3901
+
3889
3902
  $("[aria-owns='" + `${attrs.id}_listbox` + "']").attr('aria-label', $translate.instant('template.crud.search'));
3890
3903
  }
3891
3904
  };
@@ -3899,6 +3912,7 @@
3899
3912
  var modelGetter = $parse(attrs['ngModel']);
3900
3913
  var modelSetter = modelGetter.assign;
3901
3914
  var model = attrs['ngModel'];
3915
+ var cronDisabled = attrs.cronDisabled ? attrs.cronDisabled : 'true';
3902
3916
 
3903
3917
  var _self = this;
3904
3918
  var select = {};
@@ -4035,7 +4049,11 @@
4035
4049
  deselect = attrs.ngDeselect ? function (){_scope.$eval(attrs.ngDeselect)}: undefined;
4036
4050
 
4037
4051
  var combobox = $element.kendoMultiSelect(options).data('kendoMultiSelect');
4038
- combobox.enable(true);
4052
+ if(cronDisabled){
4053
+ combobox.enable(false);
4054
+ }else {
4055
+ combobox.enable(true);
4056
+ }
4039
4057
  app.kendoHelper.receivePushData(combobox);
4040
4058
 
4041
4059
  $("[aria-describedby='" + `${attrs.id}_taglist` + "']").attr('id', `${attrs.id}-container`);
@@ -4105,6 +4123,7 @@
4105
4123
  options.select = attrs.ngSelect ? function (){scope.$eval(attrs.ngSelect);}: undefined;
4106
4124
  var parent = element.parent();
4107
4125
  var id = attrs.id ? ' id="' + attrs.id + '"' : '';
4126
+ var cronDisabled = attrs.cronDisabled ? attrs.cronDisabled : 'true';
4108
4127
  var name = attrs.name ? ' name="' + attrs.name + '"' : '';
4109
4128
  var validationmessage = attrs.validationmessage ? ' validationmessage="' + attrs.validationmessage + '"' : '';
4110
4129
  var required = '';
@@ -4136,7 +4155,12 @@
4136
4155
  }
4137
4156
 
4138
4157
  var autoComplete = $element.kendoAutoComplete(options).data('kendoAutoComplete');
4139
- autoComplete.enable(true);
4158
+
4159
+ if(cronDisabled){
4160
+ autoComplete.enable(false);
4161
+ } else {
4162
+ autoComplete.enable(true);
4163
+ }
4140
4164
 
4141
4165
  if (ngModelCtrl) {
4142
4166
  ngModelCtrl.$formatters.push(function (value) {
@@ -4705,18 +4729,140 @@
4705
4729
  }
4706
4730
  }])
4707
4731
 
4732
+ .directive('cronBreadcrumbs', function () {
4733
+ 'use strict';
4734
+ return {
4735
+ restrict: 'E',
4736
+ replace: true,
4737
+ link: function (scope, element, attrs) {
4738
+ setTimeout(() => {
4739
+
4740
+ let crnDelimiterIcon = attrs.crnDelimiterIcon;
4741
+ let idMenu = attrs.idMenu;
4742
+
4743
+ // Capturar o json do menu
4744
+ let menuOptions = $(`#${idMenu}`)[0].children[0].attributes['options'];
4745
+ menuOptions = JSON.parse(menuOptions.value);
4746
+ let subMenuOptions = menuOptions.subMenuOptions;
4747
+
4748
+ // Capturar a url da pagina
4749
+ let page = document.location.hash;
4750
+ page = page.split("/");
4751
+
4752
+ let idBreadcrumb = attrs.id;
4753
+
4754
+ let breadcrumb = [];
4755
+ let arrayPaiBreadcrumb = [];
4756
+
4757
+ inicio(subMenuOptions);
4758
+
4759
+ function inicio(items) {
4760
+ let x = false;
4761
+
4762
+ for (let i in items) {
4763
+
4764
+ let action = items[i].action;
4765
+ if (action && action != "") {
4766
+ action = action.replace("cronapi.screen.changeView('", '');
4767
+ action = action.replace("', [])", '')
4768
+ action = action.split("/");
4769
+ } else {
4770
+ action = null
4771
+ }
4772
+
4773
+ if(items[i].level === 1){
4774
+ arrayPaiBreadcrumb = []
4775
+ }
4776
+ if (!action) {
4777
+ arrayPaiBreadcrumb.push({
4778
+ level: items[i].level,
4779
+ title: items[i].title,
4780
+ href: '#'
4781
+ });
4782
+ } else if (action) {
4783
+ arrayPaiBreadcrumb.push({
4784
+ level: items[i].level,
4785
+ title: items[i].title,
4786
+ href: document.location.origin + '/' + action.join("/")
4787
+ });
4788
+ }
4789
+
4790
+ if (items[i].menuItems.length > 0) {
4791
+ inicio(items[i].menuItems);
4792
+
4793
+ } else {
4794
+ if(action){
4795
+ if (action[action.length - 1] === page[page.length - 1]) {
4796
+ x = true
4797
+ }
4798
+ }
4799
+ }
4800
+
4801
+ if (x) {
4802
+ for (let y in arrayPaiBreadcrumb) {
4803
+
4804
+ if (y == 0 && arrayPaiBreadcrumb[y].level == 1) {
4805
+ breadcrumb.push({
4806
+ type: "rootitem",
4807
+ href: arrayPaiBreadcrumb[y].href,
4808
+ text: arrayPaiBreadcrumb[y].title,
4809
+ showText: true,
4810
+ showIcon: false
4811
+ })
4812
+ } else if (y == 0 && arrayPaiBreadcrumb[y].level != 1) {
4813
+ breadcrumb.push({
4814
+ type: "rootitem",
4815
+ href: arrayPaiBreadcrumb[y].href,
4816
+ text: arrayPaiBreadcrumb[y].title,
4817
+ showText: true,
4818
+ showIcon: false
4819
+ })
4820
+ } else {
4821
+ breadcrumb.push({
4822
+ type: "item",
4823
+ href: arrayPaiBreadcrumb[y].href,
4824
+ text: arrayPaiBreadcrumb[y].title,
4825
+ showText: true
4826
+ })
4827
+ }
4828
+ }
4829
+
4830
+ return breadcrumb
4831
+ }
4832
+ }
4833
+ }
4834
+
4835
+ $(`#${idBreadcrumb}`).kendoBreadcrumb({
4836
+ items: breadcrumb,
4837
+ delimiterIcon: crnDelimiterIcon,
4838
+ navigational: true
4839
+ });
4840
+
4841
+ }, 800);
4842
+ }
4843
+ }
4844
+ })
4845
+
4708
4846
  .directive('ngInitialValue', function($parse) {
4709
4847
  return {
4710
4848
  restrict: 'A',
4711
4849
  require: 'ngModel',
4712
- link: function(scope, element, attrs, ngModelCtrl) {
4850
+ link: async function(scope, element, attrs, ngModelCtrl) {
4713
4851
  if (attrs.ngInitialValue) {
4714
4852
  var modelGetter = $parse(attrs['ngModel']);
4715
4853
  var modelSetter = modelGetter.assign;
4716
4854
  var evaluated;
4717
4855
 
4718
4856
  try {
4719
- evaluated = scope.$eval(attrs.ngInitialValue);
4857
+ if(attrs.ngInitialValue.indexOf("cronapi.client('js.") != -1){//cronapi caller?
4858
+ let shortVersion = attrs.ngInitialValue.replace("cronapi.client('js.", 'blockly.js.');
4859
+ let blocklyPackage = shortVersion.split("').names")[0];
4860
+ blocklyPackage = blocklyPackage.split("').attr()")[0];
4861
+ let blocklyParams = shortVersion.split('.run')[1];
4862
+ evaluated = await scope.$eval(blocklyPackage + blocklyParams);
4863
+ } else {
4864
+ evaluated = scope.$eval(attrs.ngInitialValue);
4865
+ }
4720
4866
  } catch (e) {
4721
4867
  evaluated = attrs.ngInitialValue;
4722
4868
  }
@@ -4776,7 +4922,7 @@
4776
4922
  viewValue = null;
4777
4923
  el.prop('indeterminate', true);
4778
4924
  }
4779
- ctrl.$setViewValue(viewValue);
4925
+ setTimeout(() => ctrl.$setViewValue(viewValue));
4780
4926
  };
4781
4927
  } else if (attrs.crnAllowNullValues == 'false') {
4782
4928
  ctrl.$render = function () {
@@ -4786,7 +4932,7 @@
4786
4932
  viewValue = false;
4787
4933
  }
4788
4934
  if (viewValue === falseValue) {
4789
- let modelForEval = `${el.attr('ng-model')}=${viewValue}`;
4935
+ let modelForEval = `${el.attr('ng-model')}=${attrs.ngFalseValue}`;
4790
4936
  scope.$eval(modelForEval);
4791
4937
  }
4792
4938
  el.data('checked', viewValue);
@@ -4803,7 +4949,7 @@
4803
4949
  viewValue = falseValue;
4804
4950
  break;
4805
4951
  }
4806
- ctrl.$setViewValue(viewValue);
4952
+ setTimeout(() => ctrl.$setViewValue(viewValue));
4807
4953
  };
4808
4954
  }
4809
4955
  el.bind('click', function () {
@@ -156,6 +156,9 @@
156
156
  }
157
157
  var viewer = new Stimulsoft.Viewer.StiViewer(options, viewerId, false);
158
158
  viewer.report = report;
159
+ if(StiJsViewer.prototype.IsTouchDevice()) {
160
+ viewer.options.appearance.interfaceType = Stimulsoft.Viewer.StiInterfaceType.Touch;
161
+ }
159
162
  return viewer;
160
163
  };
161
164
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cronapp-framework-js",
3
- "version": "2.8.27",
3
+ "version": "2.8.31",
4
4
  "description": "Javascript library for CronApp's projects",
5
5
  "main": "cronapp.framework.js",
6
6
  "scripts": {