Skip to content

Commit

Permalink
LLCAXCHZF-56/changes by review
Browse files Browse the repository at this point in the history
  • Loading branch information
TomeCirun committed Jul 29, 2024
1 parent 0c74b4d commit b88e5b6
Show file tree
Hide file tree
Showing 10 changed files with 174 additions and 173 deletions.
2 changes: 1 addition & 1 deletion ckanext/charts/assets/css/charts.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

74 changes: 0 additions & 74 deletions ckanext/charts/assets/js/charts-render-chartjs.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,77 +23,3 @@ ckan.module("charts-render-chartjs", function ($, _) {
}
};
});


/*!
* chartjs-adapter-moment v1.0.0
* https://www.chartjs.org
* (c) 2021 chartjs-adapter-moment Contributors
* Released under the MIT license
*/
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('moment'), require('chart.js')) :
typeof define === 'function' && define.amd ? define(['moment', 'chart.js'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.moment, global.Chart));
}(this, (function (moment, chart_js) { 'use strict';

function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }

var moment__default = /*#__PURE__*/_interopDefaultLegacy(moment);

const FORMATS = {
datetime: 'MMM D, YYYY, h:mm:ss a',
millisecond: 'h:mm:ss.SSS a',
second: 'h:mm:ss a',
minute: 'h:mm a',
hour: 'hA',
day: 'MMM D',
week: 'll',
month: 'MMM YYYY',
quarter: '[Q]Q - YYYY',
year: 'YYYY'
};

chart_js._adapters._date.override(typeof moment__default['default'] === 'function' ? {
_id: 'moment', // DEBUG ONLY

formats: function() {
return FORMATS;
},

parse: function(value, format) {
if (typeof value === 'string' && typeof format === 'string') {
value = moment__default['default'](value, format);
} else if (!(value instanceof moment__default['default'])) {
value = moment__default['default'](value);
}
return value.isValid() ? value.valueOf() : null;
},

format: function(time, format) {
return moment__default['default'](time).format(format);
},

add: function(time, amount, unit) {
return moment__default['default'](time).add(amount, unit).valueOf();
},

diff: function(max, min, unit) {
return moment__default['default'](max).diff(moment__default['default'](min), unit);
},

startOf: function(time, unit, weekday) {
time = moment__default['default'](time);
if (unit === 'isoWeek') {
weekday = Math.trunc(Math.min(Math.max(0, weekday), 6));
return time.isoWeekday(weekday).startOf('day').valueOf();
}
return time.startOf(unit).valueOf();
},

endOf: function(time, unit) {
return moment__default['default'](time).endOf(unit).valueOf();
}
} : {});

})));
111 changes: 111 additions & 0 deletions ckanext/charts/assets/js/vendor/chartjs-adapter-moment.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
/*
Purpose:
To handle and display date and time data in Chart.js scatter and bubble charts with type: 'time' on the x-axis.
Why We Use It:
1. Date Parsing and Formatting:
- Enables robust parsing and formatting of date strings using the moment library.
2. Chart.js Compatibility:
- Integrates with Chart.js for time-based data handling.
- Necessary for using type: 'time' in chart configurations.
3. Advanced Date Manipulation:
- Provides functions for date manipulation like adding/subtracting time and calculating date differences.
Example Usage:
To use type: 'time' for the x-axis in scatter and bubble charts:
const config = {
type: 'scatter',
data: {...},
options: {
scales: {
x: {
type: 'time',
time: {
unit: 'day'
}
}
}
}
};
The moment adapter ensures accurate processing and display of date and time data in Chart.js.
*/


/*!
* chartjs-adapter-moment v1.0.0
* https://www.chartjs.org
* (c) 2021 chartjs-adapter-moment Contributors
* Released under the MIT license
*/
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('moment'), require('chart.js')) :
typeof define === 'function' && define.amd ? define(['moment', 'chart.js'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.moment, global.Chart));
}(this, (function (moment, chart_js) { 'use strict';

function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }

var moment__default = /*#__PURE__*/_interopDefaultLegacy(moment);

const FORMATS = {
datetime: 'MMM D, YYYY, h:mm:ss a',
millisecond: 'h:mm:ss.SSS a',
second: 'h:mm:ss a',
minute: 'h:mm a',
hour: 'hA',
day: 'MMM D',
week: 'll',
month: 'MMM YYYY',
quarter: '[Q]Q - YYYY',
year: 'YYYY'
};

chart_js._adapters._date.override(typeof moment__default['default'] === 'function' ? {
_id: 'moment', // DEBUG ONLY

formats: function() {
return FORMATS;
},

parse: function(value, format) {
if (typeof value === 'string' && typeof format === 'string') {
value = moment__default['default'](value, format);
} else if (!(value instanceof moment__default['default'])) {
value = moment__default['default'](value);
}
return value.isValid() ? value.valueOf() : null;
},

format: function(time, format) {
return moment__default['default'](time).format(format);
},

add: function(time, amount, unit) {
return moment__default['default'](time).add(amount, unit).valueOf();
},

diff: function(max, min, unit) {
return moment__default['default'](max).diff(moment__default['default'](min), unit);
},

startOf: function(time, unit, weekday) {
time = moment__default['default'](time);
if (unit === 'isoWeek') {
weekday = Math.trunc(Math.min(Math.max(0, weekday), 6));
return time.isoWeekday(weekday).startOf('day').valueOf();
}
return time.startOf(unit).valueOf();
},

endOf: function(time, unit) {
return moment__default['default'](time).endOf(unit).valueOf();
}
} : {});

})));
1 change: 1 addition & 0 deletions ckanext/charts/assets/webassets.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ chartjs:
output: ckanext-charts/%(version)s-chartjs.js
contents:
- js/vendor/chartjs.min.js
- js/vendor/chartjs-adapter-moment.js
- js/charts-render-chartjs.js
extra:
preload:
Expand Down
6 changes: 5 additions & 1 deletion ckanext/charts/chart_builders/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -607,7 +607,11 @@ def height_field(self) -> dict[str, Any]:
"group": "Data",
}

def more_info_button(self) -> dict[str, Any]:
def more_info_button_field(self) -> dict[str, Any]:
"""
Adds a "More info" button to the Data tab in the form, which triggers a pop-up.
This pop-up provides users with information about supported date formats.
"""
return {
"field_name": "more_info",
"label": "More info",
Expand Down
10 changes: 5 additions & 5 deletions ckanext/charts/chart_builders/chartjs.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ def get_form_fields(self):
self.type_field(chart_types),
self.x_axis_field(columns),
self.y_multi_axis_field(columns),
self.more_info_button(),
self.more_info_button_field(),
self.limit_field(),
self.filter_field(columns),
]
Expand Down Expand Up @@ -149,7 +149,7 @@ def get_form_fields(self):
self.type_field(chart_types),
self.x_axis_field(columns),
self.y_multi_axis_field(columns),
self.more_info_button(),
self.more_info_button_field(),
self.sort_x_field(),
self.sort_y_field(),
self.limit_field(),
Expand Down Expand Up @@ -206,7 +206,7 @@ def get_form_fields(self):
self.type_field(chart_types),
self.values_field(columns),
self.names_field(columns),
self.more_info_button(),
self.more_info_button_field(),
self.limit_field(),
self.filter_field(columns),
]
Expand Down Expand Up @@ -295,7 +295,7 @@ def get_form_fields(self):
self.type_field(chart_types),
self.x_axis_field(columns),
self.y_axis_field(columns),
self.more_info_button(),
self.more_info_button_field(),
self.sort_x_field(),
self.sort_y_field(),
self.limit_field(),
Expand Down Expand Up @@ -421,7 +421,7 @@ def get_form_fields(self):
columns,
help_text="Select 3 or more different categorical variables (dimensions)",
),
self.more_info_button(),
self.more_info_button_field(),
self.limit_field(),
self.filter_field(columns),
]
10 changes: 5 additions & 5 deletions ckanext/charts/chart_builders/observable.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ def get_form_fields(self):
self.type_field(chart_types),
self.x_axis_field(columns),
self.y_axis_field(columns),
self.more_info_button(),
self.more_info_button_field(),
self.sort_x_field(),
self.sort_y_field(),
self.fill_field(columns),
Expand Down Expand Up @@ -109,7 +109,7 @@ def get_form_fields(self):
self.type_field(chart_types),
self.x_axis_field(columns),
self.y_axis_field(columns),
self.more_info_button(),
self.more_info_button_field(),
self.sort_x_field(),
self.sort_y_field(),
self.limit_field(),
Expand Down Expand Up @@ -183,7 +183,7 @@ def get_form_fields(self):
self.type_field(chart_types),
self.values_field(columns),
self.names_field(columns),
self.more_info_button(),
self.more_info_button_field(),
self.opacity_field(),
self.inner_radius_field(),
self.stroke_width_field(),
Expand Down Expand Up @@ -224,7 +224,7 @@ def get_form_fields(self):
self.type_field(chart_types),
self.x_axis_field(columns),
self.y_axis_field(columns),
self.more_info_button(),
self.more_info_button_field(),
self.sort_x_field(),
self.sort_y_field(),
self.color_field(columns),
Expand Down Expand Up @@ -263,7 +263,7 @@ def get_form_fields(self):
self.type_field(chart_types),
self.x_axis_field(columns),
self.y_axis_field(columns),
self.more_info_button(),
self.more_info_button_field(),
self.sort_x_field(),
self.sort_y_field(),
self.color_field(columns),
Expand Down
8 changes: 4 additions & 4 deletions ckanext/charts/chart_builders/plotly.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ def get_form_fields(self):
self.type_field(chart_types),
self.x_axis_field(columns),
self.y_axis_field(columns),
self.more_info_button(),
self.more_info_button_field(),
self.log_x_field(),
self.log_y_field(),
self.sort_x_field(),
Expand Down Expand Up @@ -138,7 +138,7 @@ def get_form_fields(self):
self.type_field(chart_types),
self.values_field(columns),
self.names_field(columns),
self.more_info_button(),
self.more_info_button_field(),
self.opacity_field(),
self.limit_field(),
self.filter_field(columns),
Expand Down Expand Up @@ -181,7 +181,7 @@ def get_form_fields(self):
self.type_field(chart_types),
self.x_axis_field(columns),
self.plotly_y_multi_axis_field(columns, 2),
self.more_info_button(),
self.more_info_button_field(),
self.sort_x_field(),
self.sort_y_field(),
self.limit_field(),
Expand Down Expand Up @@ -224,7 +224,7 @@ def get_form_fields(self):
self.type_field(chart_types),
self.x_axis_field(columns),
self.y_axis_field(columns),
self.more_info_button(),
self.more_info_button_field(),
self.log_x_field(),
self.log_y_field(),
self.sort_x_field(),
Expand Down
Loading

0 comments on commit b88e5b6

Please sign in to comment.