* [Heatmap] Adjusting grid calculation for consistent grid layout Date math is hard! This addresses a problem in how the heatmap lays calculates days to layout the grid. The calculations were being thrown off in some scenarios by a combination of factors including timezone offsets, time of day, and daylight savings time. This patch should correct all this by forcing each day to be midnight UTC when laying out the grid. Co-authored-by: Michael Bester <michael@kimili.com> Co-authored-by: t47io <t47@alumni.stanford.edu> Co-authored-by: Saqib Ansari <nextchamp.saqib@gmail.com>
196 lines
4.0 KiB
JavaScript
196 lines
4.0 KiB
JavaScript
import pkg from './package.json';
|
|
|
|
// Rollup plugins
|
|
import babel from 'rollup-plugin-babel';
|
|
import { eslint } from 'rollup-plugin-eslint';
|
|
import replace from 'rollup-plugin-replace';
|
|
import uglify from 'rollup-plugin-uglify-es';
|
|
import sass from 'node-sass';
|
|
|
|
// PostCSS plugins
|
|
import postcssPlugin from 'rollup-plugin-postcss';
|
|
import nested from 'postcss-nested';
|
|
import cssnext from 'postcss-cssnext';
|
|
import cssnano from 'cssnano';
|
|
|
|
import postcss from 'postcss';
|
|
import precss from 'precss';
|
|
import CleanCSS from 'clean-css';
|
|
import autoprefixer from 'autoprefixer';
|
|
import fs from 'fs';
|
|
|
|
fs.readFile('src/css/charts.scss', (err, css) => {
|
|
postcss([precss, autoprefixer])
|
|
.process(css, { from: 'src/css/charts.scss', to: 'src/css/charts.css' })
|
|
.then(result => {
|
|
let options = {
|
|
level: {
|
|
1: {
|
|
removeQuotes: false,
|
|
}
|
|
}
|
|
}
|
|
let output = new CleanCSS(options).minify(result.css);
|
|
let res = JSON.stringify(output.styles).replace(/"/g, "'");
|
|
let js = `export const CSSTEXT = "${res.slice(1, -1)}";`;
|
|
fs.writeFile('src/css/chartsCss.js', js);
|
|
});
|
|
});
|
|
|
|
export default [
|
|
{
|
|
input: 'src/js/index.js',
|
|
sourcemap: true,
|
|
output: [
|
|
{
|
|
file: 'docs/assets/js/frappe-charts.min.js',
|
|
format: 'iife',
|
|
},
|
|
{
|
|
file: pkg.browser,
|
|
format: 'umd',
|
|
}
|
|
],
|
|
name: 'frappe',
|
|
plugins: [
|
|
postcssPlugin({
|
|
preprocessor: (content, id) => new Promise((resolve, reject) => {
|
|
const result = sass.renderSync({ file: id })
|
|
resolve({ code: result.css.toString() })
|
|
}),
|
|
extensions: ['.scss'],
|
|
plugins: [
|
|
nested(),
|
|
cssnext({ warnForDuplicates: false }),
|
|
cssnano()
|
|
]
|
|
}),
|
|
eslint({
|
|
exclude: [
|
|
'src/css/**'
|
|
]
|
|
}),
|
|
babel({
|
|
exclude: 'node_modules/**',
|
|
plugins: ['external-helpers']
|
|
}),
|
|
replace({
|
|
exclude: 'node_modules/**',
|
|
ENV: JSON.stringify(process.env.NODE_ENV || 'development'),
|
|
}),
|
|
uglify()
|
|
]
|
|
},
|
|
{
|
|
input: 'docs/assets/js/index.js',
|
|
sourcemap: true,
|
|
output: [
|
|
{
|
|
file: 'docs/assets/js/index.min.js',
|
|
format: 'iife',
|
|
}
|
|
],
|
|
name: 'frappe',
|
|
plugins: [
|
|
postcssPlugin({
|
|
preprocessor: (content, id) => new Promise((resolve, reject) => {
|
|
const result = sass.renderSync({ file: id })
|
|
resolve({ code: result.css.toString() })
|
|
}),
|
|
extensions: ['.scss'],
|
|
plugins: [
|
|
nested(),
|
|
cssnext({ warnForDuplicates: false }),
|
|
cssnano()
|
|
]
|
|
}),
|
|
eslint({
|
|
exclude: [
|
|
'src/css/**'
|
|
]
|
|
}),
|
|
babel({
|
|
exclude: 'node_modules/**'
|
|
}),
|
|
replace({
|
|
exclude: 'node_modules/**',
|
|
ENV: JSON.stringify(process.env.NODE_ENV || 'development'),
|
|
})
|
|
]
|
|
},
|
|
{
|
|
input: 'src/js/chart.js',
|
|
sourcemap: true,
|
|
output: [
|
|
{
|
|
file: pkg.main,
|
|
format: 'cjs',
|
|
},
|
|
{
|
|
file: pkg.module,
|
|
format: 'es',
|
|
}
|
|
],
|
|
plugins: [
|
|
postcssPlugin({
|
|
preprocessor: (content, id) => new Promise((resolve, reject) => {
|
|
const result = sass.renderSync({ file: id })
|
|
resolve({ code: result.css.toString() })
|
|
}),
|
|
extensions: ['.scss'],
|
|
plugins: [
|
|
nested(),
|
|
cssnext({ warnForDuplicates: false }),
|
|
cssnano()
|
|
]
|
|
}),
|
|
eslint({
|
|
exclude: [
|
|
'src/css/**',
|
|
]
|
|
}),
|
|
babel({
|
|
exclude: 'node_modules/**',
|
|
}),
|
|
replace({
|
|
exclude: 'node_modules/**',
|
|
ENV: JSON.stringify(process.env.NODE_ENV || 'development'),
|
|
}),
|
|
uglify()
|
|
],
|
|
},
|
|
{
|
|
input: 'src/js/chart.js',
|
|
output: [
|
|
{
|
|
file: pkg.src,
|
|
format: 'es',
|
|
}
|
|
],
|
|
plugins: [
|
|
postcssPlugin({
|
|
preprocessor: (content, id) => new Promise((resolve, reject) => {
|
|
const result = sass.renderSync({ file: id })
|
|
resolve({ code: result.css.toString() })
|
|
}),
|
|
extensions: ['.scss'],
|
|
extract: 'dist/frappe-charts.min.css',
|
|
plugins: [
|
|
nested(),
|
|
cssnext({ warnForDuplicates: false }),
|
|
cssnano()
|
|
]
|
|
}),
|
|
eslint({
|
|
exclude: [
|
|
'src/css/**',
|
|
]
|
|
}),
|
|
replace({
|
|
exclude: 'node_modules/**',
|
|
ENV: JSON.stringify(process.env.NODE_ENV || 'development'),
|
|
})
|
|
],
|
|
}
|
|
];
|