Skip to content

Repository files navigation

TrendChart Elements

Web components to generate simple, light and responsive charts representing trends.

Banner

It is often useful to display some simple charts to represent a data visualization trend without the need of a big chart library, TrendChart Elements is made for that. The aim was to be as plug-and-play as possible, like native HTML tags, so all the configuration is made with CSS variables and HTML attributes. It's fully responsive with built-in basic tooltip.

Tested on modern browsers : Chrome >= 73, Firefox >= 63, Edge >= 79, Safari >= 12

No dependency except Lit to create web components.

Installation

Install the package with NPM :

npm install @weblogin/trendchart-elements

Import into your project code :

// All the chartsimport'@weblogin/trendchart-elements';// Only some chartsimport{TcLine}from"@weblogin/trendchart-elements";

Usage

Demo

Check out the demo page for various charts, stylings and use cases.

<tc-linevalues="[12,10,12,11,7,6,8,10,12]"></tc-line><tc-columnvalues="[11,7,6,8,10,12,8,10,12]"></tc-column><tc-barvalues="[11,7,6,8,10,12,8,10,12]"></tc-bar><tc-pievalues="[35,68,22,16]"></tc-pie>

Charts configuration is made with CSS variables and HTML attributes.

Use CSS to change the width and height of the chart, because they are responsive you can use percentages. In some cases you'll need to have a radius around the chart if its container has one, for that just add a border-radius CSS rule to the chart.

HTML attributes

  • Common
    • values - Required array of numbers for the values. Example values="[12,10,11]" - Default []
    • labels - Optional array of strings for the labels corresponding to the values, it needs to be the same length as values array. Only usefull when chart not static. Example labels='["Foo","Bar","Baz"]' - Default []
    • min - Optional number or null for the minimum value, in most cases you'll need to set it to 0. When null the chart uses the smallest value - Default null
    • max - Optional number or null for the maximum value, usefull if you need to have multiple charts with the same scale. When null the chart uses the highest value - Default null
    • static - Optional attribute to disable tooltip and other hover styling, it doesn't need a value, just add the attribute
    • tooltip - Optional string to format the tooltip text. Two placeholders are available, @V being the current value and @L the current label if present - Default @L @V
  • Line chart
    • shape-size - Optional number for the line size - Default 2
  • Column / Bar chart
    • shape-radius - Optional number for the columns / bars radius - Default 1
    • shape-gap - Optional number for the gap between columns / bars - Default 1
  • Pie chart
    • shape-size - Optional number or null for the slice size, null gives a pie and a number create a donut - Default null
    • shape-gap - Optional number for the gap between slices - Default 1

CSS variables

  • Common
    • --shape-color - Default #597BFC
    • --shape-opacity - Default 1
    • --area-color - Default var(--shape-color)
    • --area-opacity - Default 0
    • --tooltip-font-color - Default white
    • --tooltip-font-size - Default 0.875em
    • --tooltip-font-weight - Default bold
    • --tooltip-radius - Default 3px
    • --tooltip-padding - Default 3px 4px
    • --tooltip-background - Default black
    • --tooltip-shadow - Default none
  • Line chart
    • --point-color - Default var(--shape-color)
    • --point-opacity - Default 1
    • --point-shadow - Default none
  • Column / Bar chart
    • --shape-focused-opacity - Column / Bar opacity on hover - Default 0.5
  • Pie chart
    • --shape-focused-opacity - Slice opacity on hover - Default 0.5

License

TrendChart Elements is licensed under the MIT license.

About

Web components to generate simple charts representing trends

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - eskan/trendchart-elements: Web components to generate simple charts representing trends · GitHub
Skip to content

Repository files navigation

TrendChart Elements

Web components to generate simple, light and responsive charts representing trends.

Banner

It is often useful to display some simple charts to represent a data visualization trend without the need of a big chart library, TrendChart Elements is made for that. The aim was to be as plug-and-play as possible, like native HTML tags, so all the configuration is made with CSS variables and HTML attributes. It's fully responsive with built-in basic tooltip.

Tested on modern browsers : Chrome >= 73, Firefox >= 63, Edge >= 79, Safari >= 12

No dependency except Lit to create web components.

Installation

Install the package with NPM :

npm install @weblogin/trendchart-elements

Import into your project code :

// All the chartsimport'@weblogin/trendchart-elements';// Only some chartsimport{TcLine}from"@weblogin/trendchart-elements";

Usage

Demo

Check out the demo page for various charts, stylings and use cases.

<tc-linevalues="[12,10,12,11,7,6,8,10,12]"></tc-line><tc-columnvalues="[11,7,6,8,10,12,8,10,12]"></tc-column><tc-barvalues="[11,7,6,8,10,12,8,10,12]"></tc-bar><tc-pievalues="[35,68,22,16]"></tc-pie>

Charts configuration is made with CSS variables and HTML attributes.

Use CSS to change the width and height of the chart, because they are responsive you can use percentages. In some cases you'll need to have a radius around the chart if its container has one, for that just add a border-radius CSS rule to the chart.

HTML attributes

  • Common
    • values - Required array of numbers for the values. Example values="[12,10,11]" - Default []
    • labels - Optional array of strings for the labels corresponding to the values, it needs to be the same length as values array. Only usefull when chart not static. Example labels='["Foo","Bar","Baz"]' - Default []
    • min - Optional number or null for the minimum value, in most cases you'll need to set it to 0. When null the chart uses the smallest value - Default null
    • max - Optional number or null for the maximum value, usefull if you need to have multiple charts with the same scale. When null the chart uses the highest value - Default null
    • static - Optional attribute to disable tooltip and other hover styling, it doesn't need a value, just add the attribute
    • tooltip - Optional string to format the tooltip text. Two placeholders are available, @V being the current value and @L the current label if present - Default @L @V
  • Line chart
    • shape-size - Optional number for the line size - Default 2
  • Column / Bar chart
    • shape-radius - Optional number for the columns / bars radius - Default 1
    • shape-gap - Optional number for the gap between columns / bars - Default 1
  • Pie chart
    • shape-size - Optional number or null for the slice size, null gives a pie and a number create a donut - Default null
    • shape-gap - Optional number for the gap between slices - Default 1

CSS variables

  • Common
    • --shape-color - Default #597BFC
    • --shape-opacity - Default 1
    • --area-color - Default var(--shape-color)
    • --area-opacity - Default 0
    • --tooltip-font-color - Default white
    • --tooltip-font-size - Default 0.875em
    • --tooltip-font-weight - Default bold
    • --tooltip-radius - Default 3px
    • --tooltip-padding - Default 3px 4px
    • --tooltip-background - Default black
    • --tooltip-shadow - Default none
  • Line chart
    • --point-color - Default var(--shape-color)
    • --point-opacity - Default 1
    • --point-shadow - Default none
  • Column / Bar chart
    • --shape-focused-opacity - Column / Bar opacity on hover - Default 0.5
  • Pie chart
    • --shape-focused-opacity - Slice opacity on hover - Default 0.5

License

TrendChart Elements is licensed under the MIT license.

About

Web components to generate simple charts representing trends

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - eskan/trendchart-elements: Web components to generate simple charts representing trends · GitHub
Skip to content

Repository files navigation

TrendChart Elements

Web components to generate simple, light and responsive charts representing trends.

Banner

It is often useful to display some simple charts to represent a data visualization trend without the need of a big chart library, TrendChart Elements is made for that. The aim was to be as plug-and-play as possible, like native HTML tags, so all the configuration is made with CSS variables and HTML attributes. It's fully responsive with built-in basic tooltip.

Tested on modern browsers : Chrome >= 73, Firefox >= 63, Edge >= 79, Safari >= 12

No dependency except Lit to create web components.

Installation

Install the package with NPM :

npm install @weblogin/trendchart-elements

Import into your project code :

// All the chartsimport'@weblogin/trendchart-elements';// Only some chartsimport{TcLine}from"@weblogin/trendchart-elements";

Usage

Demo

Check out the demo page for various charts, stylings and use cases.

<tc-linevalues="[12,10,12,11,7,6,8,10,12]"></tc-line><tc-columnvalues="[11,7,6,8,10,12,8,10,12]"></tc-column><tc-barvalues="[11,7,6,8,10,12,8,10,12]"></tc-bar><tc-pievalues="[35,68,22,16]"></tc-pie>

Charts configuration is made with CSS variables and HTML attributes.

Use CSS to change the width and height of the chart, because they are responsive you can use percentages. In some cases you'll need to have a radius around the chart if its container has one, for that just add a border-radius CSS rule to the chart.

HTML attributes

  • Common
    • values - Required array of numbers for the values. Example values="[12,10,11]" - Default []
    • labels - Optional array of strings for the labels corresponding to the values, it needs to be the same length as values array. Only usefull when chart not static. Example labels='["Foo","Bar","Baz"]' - Default []
    • min - Optional number or null for the minimum value, in most cases you'll need to set it to 0. When null the chart uses the smallest value - Default null
    • max - Optional number or null for the maximum value, usefull if you need to have multiple charts with the same scale. When null the chart uses the highest value - Default null
    • static - Optional attribute to disable tooltip and other hover styling, it doesn't need a value, just add the attribute
    • tooltip - Optional string to format the tooltip text. Two placeholders are available, @V being the current value and @L the current label if present - Default @L @V
  • Line chart
    • shape-size - Optional number for the line size - Default 2
  • Column / Bar chart
    • shape-radius - Optional number for the columns / bars radius - Default 1
    • shape-gap - Optional number for the gap between columns / bars - Default 1
  • Pie chart
    • shape-size - Optional number or null for the slice size, null gives a pie and a number create a donut - Default null
    • shape-gap - Optional number for the gap between slices - Default 1

CSS variables

  • Common
    • --shape-color - Default #597BFC
    • --shape-opacity - Default 1
    • --area-color - Default var(--shape-color)
    • --area-opacity - Default 0
    • --tooltip-font-color - Default white
    • --tooltip-font-size - Default 0.875em
    • --tooltip-font-weight - Default bold
    • --tooltip-radius - Default 3px
    • --tooltip-padding - Default 3px 4px
    • --tooltip-background - Default black
    • --tooltip-shadow - Default none
  • Line chart
    • --point-color - Default var(--shape-color)
    • --point-opacity - Default 1
    • --point-shadow - Default none
  • Column / Bar chart
    • --shape-focused-opacity - Column / Bar opacity on hover - Default 0.5
  • Pie chart
    • --shape-focused-opacity - Slice opacity on hover - Default 0.5

License

TrendChart Elements is licensed under the MIT license.

About

Web components to generate simple charts representing trends

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - eskan/trendchart-elements: Web components to generate simple charts representing trends · GitHub
Skip to content

Repository files navigation

TrendChart Elements

Web components to generate simple, light and responsive charts representing trends.

Banner

It is often useful to display some simple charts to represent a data visualization trend without the need of a big chart library, TrendChart Elements is made for that. The aim was to be as plug-and-play as possible, like native HTML tags, so all the configuration is made with CSS variables and HTML attributes. It's fully responsive with built-in basic tooltip.

Tested on modern browsers : Chrome >= 73, Firefox >= 63, Edge >= 79, Safari >= 12

No dependency except Lit to create web components.

Installation

Install the package with NPM :

npm install @weblogin/trendchart-elements

Import into your project code :

// All the chartsimport'@weblogin/trendchart-elements';// Only some chartsimport{TcLine}from"@weblogin/trendchart-elements";

Usage

Demo

Check out the demo page for various charts, stylings and use cases.

<tc-linevalues="[12,10,12,11,7,6,8,10,12]"></tc-line><tc-columnvalues="[11,7,6,8,10,12,8,10,12]"></tc-column><tc-barvalues="[11,7,6,8,10,12,8,10,12]"></tc-bar><tc-pievalues="[35,68,22,16]"></tc-pie>

Charts configuration is made with CSS variables and HTML attributes.

Use CSS to change the width and height of the chart, because they are responsive you can use percentages. In some cases you'll need to have a radius around the chart if its container has one, for that just add a border-radius CSS rule to the chart.

HTML attributes

  • Common
    • values - Required array of numbers for the values. Example values="[12,10,11]" - Default []
    • labels - Optional array of strings for the labels corresponding to the values, it needs to be the same length as values array. Only usefull when chart not static. Example labels='["Foo","Bar","Baz"]' - Default []
    • min - Optional number or null for the minimum value, in most cases you'll need to set it to 0. When null the chart uses the smallest value - Default null
    • max - Optional number or null for the maximum value, usefull if you need to have multiple charts with the same scale. When null the chart uses the highest value - Default null
    • static - Optional attribute to disable tooltip and other hover styling, it doesn't need a value, just add the attribute
    • tooltip - Optional string to format the tooltip text. Two placeholders are available, @V being the current value and @L the current label if present - Default @L @V
  • Line chart
    • shape-size - Optional number for the line size - Default 2
  • Column / Bar chart
    • shape-radius - Optional number for the columns / bars radius - Default 1
    • shape-gap - Optional number for the gap between columns / bars - Default 1
  • Pie chart
    • shape-size - Optional number or null for the slice size, null gives a pie and a number create a donut - Default null
    • shape-gap - Optional number for the gap between slices - Default 1

CSS variables

  • Common
    • --shape-color - Default #597BFC
    • --shape-opacity - Default 1
    • --area-color - Default var(--shape-color)
    • --area-opacity - Default 0
    • --tooltip-font-color - Default white
    • --tooltip-font-size - Default 0.875em
    • --tooltip-font-weight - Default bold
    • --tooltip-radius - Default 3px
    • --tooltip-padding - Default 3px 4px
    • --tooltip-background - Default black
    • --tooltip-shadow - Default none
  • Line chart
    • --point-color - Default var(--shape-color)
    • --point-opacity - Default 1
    • --point-shadow - Default none
  • Column / Bar chart
    • --shape-focused-opacity - Column / Bar opacity on hover - Default 0.5
  • Pie chart
    • --shape-focused-opacity - Slice opacity on hover - Default 0.5

License

TrendChart Elements is licensed under the MIT license.

About

Web components to generate simple charts representing trends

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - eskan/trendchart-elements: Web components to generate simple charts representing trends · GitHub
Skip to content

Repository files navigation

TrendChart Elements

Web components to generate simple, light and responsive charts representing trends.

Banner

It is often useful to display some simple charts to represent a data visualization trend without the need of a big chart library, TrendChart Elements is made for that. The aim was to be as plug-and-play as possible, like native HTML tags, so all the configuration is made with CSS variables and HTML attributes. It's fully responsive with built-in basic tooltip.

Tested on modern browsers : Chrome >= 73, Firefox >= 63, Edge >= 79, Safari >= 12

No dependency except Lit to create web components.

Installation

Install the package with NPM :

npm install @weblogin/trendchart-elements

Import into your project code :

// All the chartsimport'@weblogin/trendchart-elements';// Only some chartsimport{TcLine}from"@weblogin/trendchart-elements";

Usage

Demo

Check out the demo page for various charts, stylings and use cases.

<tc-linevalues="[12,10,12,11,7,6,8,10,12]"></tc-line><tc-columnvalues="[11,7,6,8,10,12,8,10,12]"></tc-column><tc-barvalues="[11,7,6,8,10,12,8,10,12]"></tc-bar><tc-pievalues="[35,68,22,16]"></tc-pie>

Charts configuration is made with CSS variables and HTML attributes.

Use CSS to change the width and height of the chart, because they are responsive you can use percentages. In some cases you'll need to have a radius around the chart if its container has one, for that just add a border-radius CSS rule to the chart.

HTML attributes

  • Common
    • values - Required array of numbers for the values. Example values="[12,10,11]" - Default []
    • labels - Optional array of strings for the labels corresponding to the values, it needs to be the same length as values array. Only usefull when chart not static. Example labels='["Foo","Bar","Baz"]' - Default []
    • min - Optional number or null for the minimum value, in most cases you'll need to set it to 0. When null the chart uses the smallest value - Default null
    • max - Optional number or null for the maximum value, usefull if you need to have multiple charts with the same scale. When null the chart uses the highest value - Default null
    • static - Optional attribute to disable tooltip and other hover styling, it doesn't need a value, just add the attribute
    • tooltip - Optional string to format the tooltip text. Two placeholders are available, @V being the current value and @L the current label if present - Default @L @V
  • Line chart
    • shape-size - Optional number for the line size - Default 2
  • Column / Bar chart
    • shape-radius - Optional number for the columns / bars radius - Default 1
    • shape-gap - Optional number for the gap between columns / bars - Default 1
  • Pie chart
    • shape-size - Optional number or null for the slice size, null gives a pie and a number create a donut - Default null
    • shape-gap - Optional number for the gap between slices - Default 1

CSS variables

  • Common
    • --shape-color - Default #597BFC
    • --shape-opacity - Default 1
    • --area-color - Default var(--shape-color)
    • --area-opacity - Default 0
    • --tooltip-font-color - Default white
    • --tooltip-font-size - Default 0.875em
    • --tooltip-font-weight - Default bold
    • --tooltip-radius - Default 3px
    • --tooltip-padding - Default 3px 4px
    • --tooltip-background - Default black
    • --tooltip-shadow - Default none
  • Line chart
    • --point-color - Default var(--shape-color)
    • --point-opacity - Default 1
    • --point-shadow - Default none
  • Column / Bar chart
    • --shape-focused-opacity - Column / Bar opacity on hover - Default 0.5
  • Pie chart
    • --shape-focused-opacity - Slice opacity on hover - Default 0.5

License

TrendChart Elements is licensed under the MIT license.

About

Web components to generate simple charts representing trends

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - eskan/trendchart-elements: Web components to generate simple charts representing trends · GitHub
Skip to content

Repository files navigation

TrendChart Elements

Web components to generate simple, light and responsive charts representing trends.

Banner

It is often useful to display some simple charts to represent a data visualization trend without the need of a big chart library, TrendChart Elements is made for that. The aim was to be as plug-and-play as possible, like native HTML tags, so all the configuration is made with CSS variables and HTML attributes. It's fully responsive with built-in basic tooltip.

Tested on modern browsers : Chrome >= 73, Firefox >= 63, Edge >= 79, Safari >= 12

No dependency except Lit to create web components.

Installation

Install the package with NPM :

npm install @weblogin/trendchart-elements

Import into your project code :

// All the chartsimport'@weblogin/trendchart-elements';// Only some chartsimport{TcLine}from"@weblogin/trendchart-elements";

Usage

Demo

Check out the demo page for various charts, stylings and use cases.

<tc-linevalues="[12,10,12,11,7,6,8,10,12]"></tc-line><tc-columnvalues="[11,7,6,8,10,12,8,10,12]"></tc-column><tc-barvalues="[11,7,6,8,10,12,8,10,12]"></tc-bar><tc-pievalues="[35,68,22,16]"></tc-pie>

Charts configuration is made with CSS variables and HTML attributes.

Use CSS to change the width and height of the chart, because they are responsive you can use percentages. In some cases you'll need to have a radius around the chart if its container has one, for that just add a border-radius CSS rule to the chart.

HTML attributes

  • Common
    • values - Required array of numbers for the values. Example values="[12,10,11]" - Default []
    • labels - Optional array of strings for the labels corresponding to the values, it needs to be the same length as values array. Only usefull when chart not static. Example labels='["Foo","Bar","Baz"]' - Default []
    • min - Optional number or null for the minimum value, in most cases you'll need to set it to 0. When null the chart uses the smallest value - Default null
    • max - Optional number or null for the maximum value, usefull if you need to have multiple charts with the same scale. When null the chart uses the highest value - Default null
    • static - Optional attribute to disable tooltip and other hover styling, it doesn't need a value, just add the attribute
    • tooltip - Optional string to format the tooltip text. Two placeholders are available, @V being the current value and @L the current label if present - Default @L @V
  • Line chart
    • shape-size - Optional number for the line size - Default 2
  • Column / Bar chart
    • shape-radius - Optional number for the columns / bars radius - Default 1
    • shape-gap - Optional number for the gap between columns / bars - Default 1
  • Pie chart
    • shape-size - Optional number or null for the slice size, null gives a pie and a number create a donut - Default null
    • shape-gap - Optional number for the gap between slices - Default 1

CSS variables

  • Common
    • --shape-color - Default #597BFC
    • --shape-opacity - Default 1
    • --area-color - Default var(--shape-color)
    • --area-opacity - Default 0
    • --tooltip-font-color - Default white
    • --tooltip-font-size - Default 0.875em
    • --tooltip-font-weight - Default bold
    • --tooltip-radius - Default 3px
    • --tooltip-padding - Default 3px 4px
    • --tooltip-background - Default black
    • --tooltip-shadow - Default none
  • Line chart
    • --point-color - Default var(--shape-color)
    • --point-opacity - Default 1
    • --point-shadow - Default none
  • Column / Bar chart
    • --shape-focused-opacity - Column / Bar opacity on hover - Default 0.5
  • Pie chart
    • --shape-focused-opacity - Slice opacity on hover - Default 0.5

License

TrendChart Elements is licensed under the MIT license.

About

Web components to generate simple charts representing trends

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - eskan/trendchart-elements: Web components to generate simple charts representing trends · GitHub
Skip to content

Repository files navigation

TrendChart Elements

Web components to generate simple, light and responsive charts representing trends.

Banner

It is often useful to display some simple charts to represent a data visualization trend without the need of a big chart library, TrendChart Elements is made for that. The aim was to be as plug-and-play as possible, like native HTML tags, so all the configuration is made with CSS variables and HTML attributes. It's fully responsive with built-in basic tooltip.

Tested on modern browsers : Chrome >= 73, Firefox >= 63, Edge >= 79, Safari >= 12

No dependency except Lit to create web components.

Installation

Install the package with NPM :

npm install @weblogin/trendchart-elements

Import into your project code :

// All the chartsimport'@weblogin/trendchart-elements';// Only some chartsimport{TcLine}from"@weblogin/trendchart-elements";

Usage

Demo

Check out the demo page for various charts, stylings and use cases.

<tc-linevalues="[12,10,12,11,7,6,8,10,12]"></tc-line><tc-columnvalues="[11,7,6,8,10,12,8,10,12]"></tc-column><tc-barvalues="[11,7,6,8,10,12,8,10,12]"></tc-bar><tc-pievalues="[35,68,22,16]"></tc-pie>

Charts configuration is made with CSS variables and HTML attributes.

Use CSS to change the width and height of the chart, because they are responsive you can use percentages. In some cases you'll need to have a radius around the chart if its container has one, for that just add a border-radius CSS rule to the chart.

HTML attributes

  • Common
    • values - Required array of numbers for the values. Example values="[12,10,11]" - Default []
    • labels - Optional array of strings for the labels corresponding to the values, it needs to be the same length as values array. Only usefull when chart not static. Example labels='["Foo","Bar","Baz"]' - Default []
    • min - Optional number or null for the minimum value, in most cases you'll need to set it to 0. When null the chart uses the smallest value - Default null
    • max - Optional number or null for the maximum value, usefull if you need to have multiple charts with the same scale. When null the chart uses the highest value - Default null
    • static - Optional attribute to disable tooltip and other hover styling, it doesn't need a value, just add the attribute
    • tooltip - Optional string to format the tooltip text. Two placeholders are available, @V being the current value and @L the current label if present - Default @L @V
  • Line chart
    • shape-size - Optional number for the line size - Default 2
  • Column / Bar chart
    • shape-radius - Optional number for the columns / bars radius - Default 1
    • shape-gap - Optional number for the gap between columns / bars - Default 1
  • Pie chart
    • shape-size - Optional number or null for the slice size, null gives a pie and a number create a donut - Default null
    • shape-gap - Optional number for the gap between slices - Default 1

CSS variables

  • Common
    • --shape-color - Default #597BFC
    • --shape-opacity - Default 1
    • --area-color - Default var(--shape-color)
    • --area-opacity - Default 0
    • --tooltip-font-color - Default white
    • --tooltip-font-size - Default 0.875em
    • --tooltip-font-weight - Default bold
    • --tooltip-radius - Default 3px
    • --tooltip-padding - Default 3px 4px
    • --tooltip-background - Default black
    • --tooltip-shadow - Default none
  • Line chart
    • --point-color - Default var(--shape-color)
    • --point-opacity - Default 1
    • --point-shadow - Default none
  • Column / Bar chart
    • --shape-focused-opacity - Column / Bar opacity on hover - Default 0.5
  • Pie chart
    • --shape-focused-opacity - Slice opacity on hover - Default 0.5

License

TrendChart Elements is licensed under the MIT license.

About

Web components to generate simple charts representing trends

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - eskan/trendchart-elements: Web components to generate simple charts representing trends · GitHub
Skip to content

Repository files navigation

TrendChart Elements

Web components to generate simple, light and responsive charts representing trends.

Banner

It is often useful to display some simple charts to represent a data visualization trend without the need of a big chart library, TrendChart Elements is made for that. The aim was to be as plug-and-play as possible, like native HTML tags, so all the configuration is made with CSS variables and HTML attributes. It's fully responsive with built-in basic tooltip.

Tested on modern browsers : Chrome >= 73, Firefox >= 63, Edge >= 79, Safari >= 12

No dependency except Lit to create web components.

Installation

Install the package with NPM :

npm install @weblogin/trendchart-elements

Import into your project code :

// All the chartsimport'@weblogin/trendchart-elements';// Only some chartsimport{TcLine}from"@weblogin/trendchart-elements";

Usage

Demo

Check out the demo page for various charts, stylings and use cases.

<tc-linevalues="[12,10,12,11,7,6,8,10,12]"></tc-line><tc-columnvalues="[11,7,6,8,10,12,8,10,12]"></tc-column><tc-barvalues="[11,7,6,8,10,12,8,10,12]"></tc-bar><tc-pievalues="[35,68,22,16]"></tc-pie>

Charts configuration is made with CSS variables and HTML attributes.

Use CSS to change the width and height of the chart, because they are responsive you can use percentages. In some cases you'll need to have a radius around the chart if its container has one, for that just add a border-radius CSS rule to the chart.

HTML attributes

  • Common
    • values - Required array of numbers for the values. Example values="[12,10,11]" - Default []
    • labels - Optional array of strings for the labels corresponding to the values, it needs to be the same length as values array. Only usefull when chart not static. Example labels='["Foo","Bar","Baz"]' - Default []
    • min - Optional number or null for the minimum value, in most cases you'll need to set it to 0. When null the chart uses the smallest value - Default null
    • max - Optional number or null for the maximum value, usefull if you need to have multiple charts with the same scale. When null the chart uses the highest value - Default null
    • static - Optional attribute to disable tooltip and other hover styling, it doesn't need a value, just add the attribute
    • tooltip - Optional string to format the tooltip text. Two placeholders are available, @V being the current value and @L the current label if present - Default @L @V
  • Line chart
    • shape-size - Optional number for the line size - Default 2
  • Column / Bar chart
    • shape-radius - Optional number for the columns / bars radius - Default 1
    • shape-gap - Optional number for the gap between columns / bars - Default 1
  • Pie chart
    • shape-size - Optional number or null for the slice size, null gives a pie and a number create a donut - Default null
    • shape-gap - Optional number for the gap between slices - Default 1

CSS variables

  • Common
    • --shape-color - Default #597BFC
    • --shape-opacity - Default 1
    • --area-color - Default var(--shape-color)
    • --area-opacity - Default 0
    • --tooltip-font-color - Default white
    • --tooltip-font-size - Default 0.875em
    • --tooltip-font-weight - Default bold
    • --tooltip-radius - Default 3px
    • --tooltip-padding - Default 3px 4px
    • --tooltip-background - Default black
    • --tooltip-shadow - Default none
  • Line chart
    • --point-color - Default var(--shape-color)
    • --point-opacity - Default 1
    • --point-shadow - Default none
  • Column / Bar chart
    • --shape-focused-opacity - Column / Bar opacity on hover - Default 0.5
  • Pie chart
    • --shape-focused-opacity - Slice opacity on hover - Default 0.5

License

TrendChart Elements is licensed under the MIT license.

About

Web components to generate simple charts representing trends

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages