Time.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. topSuite("Ext.chart.axis.Time", ['Ext.chart.*', 'Ext.data.ArrayStore'], function() {
  2. beforeEach(function() {
  3. // Silence Sencha download server warnings
  4. spyOn(Ext.log, 'warn');
  5. });
  6. describe('renderer', function () {
  7. var chart;
  8. afterEach(function() {
  9. Ext.destroy(chart);
  10. });
  11. // Safari 7 times out here in Modern for unknown reason in TeamCity only.
  12. // Works fine locally (tested in Safari 7.0 (9537.71).
  13. TODO(Ext.isSafari7).
  14. it('should work with custom renderers even when "dateFormat" is set', function () {
  15. var axisRendererCallCount = 0,
  16. lastAxisRendererResult,
  17. axes, timeAxis, layoutEndSpy;
  18. chart = new Ext.chart.CartesianChart({
  19. renderTo: Ext.getBody(),
  20. width: 400,
  21. height: 400,
  22. insetPadding: 60,
  23. store: new Ext.data.Store({
  24. data: [
  25. {value: 1, time: new Date('Jun 01 2015 12:00')},
  26. {value: 3, time: new Date('Jun 01 2015 13:00')},
  27. {value: 2, time: new Date('Jun 01 2015 14:00')}
  28. ]
  29. }),
  30. series: {
  31. type: 'line',
  32. xField: 'time',
  33. yField: 'value'
  34. },
  35. axes: [
  36. {
  37. type: 'numeric',
  38. position: 'left'
  39. },
  40. {
  41. type: 'time',
  42. position: 'bottom',
  43. dateFormat: 'F j g:i A',
  44. renderer: function () {
  45. axisRendererCallCount++;
  46. return lastAxisRendererResult = 'hello';
  47. }
  48. }
  49. ]
  50. });
  51. layoutEndSpy = spyOn(chart, 'onLayoutEnd').andCallThrough();
  52. waitsForSpy(layoutEndSpy, "chart layout to finish");
  53. runs(function () {
  54. expect(axisRendererCallCount).toBeGreaterThan(3);
  55. axes = chart.getAxes();
  56. timeAxis = axes[1];
  57. axisRendererCallCount = 0;
  58. timeAxis.getSegmenter().setStep({
  59. unit: Ext.Date.HOUR,
  60. step: 1
  61. });
  62. layoutEndSpy.reset();
  63. chart.performLayout();
  64. });
  65. waitsForSpy(layoutEndSpy, "chart layout to finish");
  66. runs(function () {
  67. expect(axisRendererCallCount).toBe(3);
  68. expect(lastAxisRendererResult).toBe('hello');
  69. axisRendererCallCount = 0;
  70. lastAxisRendererResult = undefined;
  71. timeAxis.setRenderer(function () {
  72. axisRendererCallCount++;
  73. return lastAxisRendererResult = 'hi';
  74. });
  75. // New custom renderer should trigger axis and chart layouts.
  76. layoutEndSpy.reset();
  77. });
  78. waitsForSpy(layoutEndSpy, "chart layout to finish");
  79. runs(function () {
  80. expect(axisRendererCallCount).toBe(3);
  81. expect(lastAxisRendererResult).toBe('hi');
  82. timeAxis.setRenderer(null);
  83. // No user renderer, but dateFormat is set, should create a default renderer
  84. // based on dateFormat.
  85. var defaultRenderer = timeAxis.getRenderer();
  86. expect(defaultRenderer.isDefault).toBe(true);
  87. });
  88. });
  89. });
  90. });