supercharts-bullet_train 1.0.3 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/supercharts-bullet-train.esm.js +1 -1
- data/app/assets/javascripts/supercharts-bullet-train.esm.js.map +1 -1
- data/app/assets/javascripts/supercharts-bullet-train.js +1 -1
- data/app/assets/javascripts/supercharts-bullet-train.js.map +1 -1
- data/app/assets/javascripts/supercharts-bullet-train.modern.mjs +1 -1
- data/app/assets/javascripts/supercharts-bullet-train.modern.mjs.map +1 -1
- data/app/assets/javascripts/supercharts-bullet-train.umd.js +1 -1
- data/app/assets/javascripts/supercharts-bullet-train.umd.js.map +1 -1
- data/app/javascript/controllers/superchart_controller.js +2 -3
- data/app/views/account/scaffolding/completely_concrete/tangible_things/tangible_things_chart/show.html.erb +6 -24
- data/app/views/shared/supercharts/_filter_button.html.erb +8 -1
- data/lib/bullet_train/supercharts/engine.rb +2 -2
- data/lib/bullet_train/supercharts/scaffolders/chart_scaffolder.rb +2 -2
- data/lib/bullet_train/supercharts/version.rb +1 -1
- data/lib/scaffolding/app/controllers/account/scaffolding/completely_concrete/tangible_things/tangible_things_chart_controller.rb +21 -32
- data/lib/scaffolding/supercharts_chart_transformer.rb +72 -20
- data/lib/scaffolding/supercharts_routes_file_manipulator.rb +21 -23
- data/lib/scaffolding/supercharts_transformer.rb +11 -13
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9f028c4e4c0144a3cc864dc7dfbfe3b04fe80462c1e602325e4520746a1c7e85
|
4
|
+
data.tar.gz: e1871658b39073aed06174cca8dc9528939b89a6cd6560259d9bfddd80f993d8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c4eaf6186a0186806bfaa6f616305bf00f8140a9543fb355237b2d37c0954abf4fc9a10ad6d1f9cb3175bbd4a532813afe3a784ff3625a03945d5d8c4104f707
|
7
|
+
data.tar.gz: 53d1ef43b3227b868443a9bb5c845d23caaa6432d0b955959f8fe44d9a6260a5eb8d265f69ac7b82d8ceeb12c6d60a87dde9d72cade2bb803062a2832ca051df
|
@@ -1,2 +1,2 @@
|
|
1
|
-
import{SuperchartChartjsController as t,parseContentsAsJSON as
|
1
|
+
import{SuperchartChartjsController as t,parseContentsAsCsv as e,parseContentsAsJSON as r}from"@supercharts/stimulus-base";import{Controller as a}from"@hotwired/stimulus";function s(t){const e=(t.match(/^(?:\.\/)?(.+)(?:[_-]controller\..+?)$/)||[])[1];if(e)return e.replace(/_/g,"-").replace(/\//g,"--")}class i extends t{connect(){super.connect()}updateChart(){super.updateChart()}describeDataForX(t){var e,r;const a=(null==t||null==(e=t.tooltip)?void 0:e.dataPoints[0]).dataIndex;this.dispatch("description-requested",{detail:{label:this.csvData[a][this.csvData.columns[1]],value:this.csvData[a][this.csvData.columns[3]],show:!(null==t||null==(r=t.tooltip)||!r.opacity)}})}parseCsvData(){this.csvData=e(this.csvDataTarget)}get chartjsData(){return this.hasChartJsDataTarget?super.chartjsData():this.hasCsvDataTarget?(this.parseCsvData(),{labels:this.csvData.map(t=>t[this.csvData.columns[0]]),datasets:[{type:this.typeValue,label:"Value",data:this.csvData.map(t=>t[this.csvData.columns[2]])}]}):(console.warn("The chart needs data in a in a csv target or in a chartjsData target (in chart.js JSON)"),[])}get chartjsOptions(){let t={...this.defaultOptions};return this.hasChartjsOptionsTarget&&(t={...t,...r(this.chartjsOptionsTarget)}),this.parseForCssVars(t)}get animationOptions(){return!1!==this.runAnimations&&{x:{type:"number",easing:"linear",duration:this.delayBetweenPoints,from:NaN,delay:t=>"data"!==t.type||t.xStarted?0:(t.xStarted=!0,t.index*this.delayBetweenPoints)},y:{type:"number",easing:"linear",duration:this.delayBetweenPoints,from:o,delay:t=>"data"!==t.type||t.yStarted?0:(t.yStarted=!0,t.index*this.delayBetweenPoints)}}}get defaultOptions(){const t=this.cssPropertyValue("--axis-color");return{maintainAspectRatio:!1,animation:this.animationOptions,interaction:{mode:"index",intersect:!1},resizeDelay:200,onResize:this.handleResize.bind(this),plugins:{legend:{display:!1},tooltip:{enabled:!1,position:"nearest",external:this.describeDataForX.bind(this)}},color:t,fill:!1,lineTension:.3,borderColor:this.cssPropertyValue("--line-color"),borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",pointBorderColor:this.cssPropertyValue("--point-stroke-color"),pointBackgroundColor:this.cssPropertyValue("--point-color"),pointHoverBackgroundColor:this.cssPropertyValue("--point-color"),pointHoverBorderColor:this.cssPropertyValue("--point-stroke-color-hover"),pointRadius:Number(this.cssPropertyValue("--point-radius")),pointHoverRadius:Number(this.cssPropertyValue("--point-hover-radius")),pointBorderWidth:Number(this.cssPropertyValue("--point-border-width")),pointHoverBorderWidth:Number(this.cssPropertyValue("--point-hover-border-width")),pointHitRadius:10,backgroundColor:this.cssPropertyValue("--bar-fill-color"),hoverBackgroundColor:this.cssPropertyValue("--bar-hover-fill-color"),spanGaps:!1,scales:{x:{grid:{color:this.cssPropertyValue("--grid-color"),borderColor:t,tickColor:t},ticks:{color:t,tickColor:t}},y:{grid:{color:this.cssPropertyValue("--grid-color"),borderColor:t,tickColor:t},ticks:{color:t,tickColor:t},suggestedMin:0,suggestedMax:10}}}}get delayBetweenPoints(){var t,e,r;return this.cssPropertyValue("--animation-duration")/(null==(t=this.chartjsData)||null==(e=t.datasets[0])||null==(r=e.data)?void 0:r.length)}}function o(t){return 0===t.index?t.chart.scales.y.getPixelForValue(100):t.chart.getDatasetMeta(t.datasetIndex).data[t.index-1].getProps(["y"],!0).y}i.targets=["chartjsOptions","chartjsData","chartjsCanvas","csvData"],i.values={type:{type:String,default:"line"}},i.defaultCssProperties={"--animation-duration":200,"--axis-color":"#999","--grid-color":"#eee","--line-color":"#aaa","--point-color":"#333","--point-stroke-color":"#fff","--point-stroke-color-hover":"#eee","--bar-fill-color":"#999","--bar-hover-fill-color":"#333","--point-radius":6,"--point-hover-radius":10,"--point-border-width":4,"--point-hover-border-width":3};class l extends a{showDescriptionWith(t){var e,r,a;if(null==t||null==(e=t.detail)||!e.show)return this.hideContextualDescription(),void this.showOverallDescription();this.hideOverallDescription();const s=null==t||null==(r=t.detail)?void 0:r.value,i=null==t||null==(a=t.detail)?void 0:a.label;this.contextualDescriptionTarget.innerHTML=this.contextualDescriptionTemplateTarget.innerHTML.replaceAll("%value%",s).replaceAll("%label%",i),this.showContextualDescription()}hideOverallDescription(){this.overallDescriptionTarget.classList.add(...this.hideOverallDescriptionClasses)}showOverallDescription(){this.overallDescriptionTarget.classList.remove(...this.hideOverallDescriptionClasses)}hideContextualDescription(){this.contextualDescriptionTarget.classList.add(...this.hideContextualDescriptionClasses)}showContextualDescription(){this.contextualDescriptionTarget.classList.remove(...this.hideContextualDescriptionClasses)}}l.targets=["overallDescription","contextualDescription","contextualDescriptionTemplate"],l.classes=["hideOverallDescription","hideContextualDescription"];class n extends a{updateChart(t){this.chartSourceDataTarget.innerHTML=t.detail.dataElement.innerHTML,t.detail.dataElement.remove(),this.chartTarget.dispatchEvent(new CustomEvent(this.eventNameValue))}}n.targets=["chartSourceData","chart"],n.values={eventName:{type:String,default:"update-chart"}};class c extends a{connect(){this.element.dispatchEvent(new CustomEvent(this.eventNameValue,{detail:{dataElement:this.dataTarget},bubbles:!0,cancelable:!0}))}}c.targets=["data"],c.values={eventName:{type:String,default:"superchart:update-chart"}};const h=[[i,"superchart_controller.js"],[l,"supercharts/describable_controller.js"],[n,"supercharts/filterable_controller.js"],[c,"supercharts/filters_controller.js"]].map(function(t){const e=t[0];return{identifier:s(t[1]),controllerConstructor:e}});export{l as DescribableController,n as FilterableController,c as FiltersController,i as SuperchartController,h as controllerDefinitions};
|
2
2
|
//# sourceMappingURL=supercharts-bullet-train.esm.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"supercharts-bullet-train.esm.js","sources":["../../../node_modules/@hotwired/stimulus-webpack-helpers/dist/stimulus-webpack-helpers.js","../../javascript/controllers/superchart_controller.js","../../javascript/controllers/supercharts/describable_controller.js","../../javascript/controllers/supercharts/filterable_controller.js","../../javascript/controllers/supercharts/filters_controller.js","../../javascript/controllers/index.js"],"sourcesContent":["/*\nStimulus Webpack Helpers 1.0.0\nCopyright © 2021 Basecamp, LLC\n */\nfunction definitionsFromContext(context) {\n return context.keys()\n .map((key) => definitionForModuleWithContextAndKey(context, key))\n .filter((value) => value);\n}\nfunction definitionForModuleWithContextAndKey(context, key) {\n const identifier = identifierForContextKey(key);\n if (identifier) {\n return definitionForModuleAndIdentifier(context(key), identifier);\n }\n}\nfunction definitionForModuleAndIdentifier(module, identifier) {\n const controllerConstructor = module.default;\n if (typeof controllerConstructor == \"function\") {\n return { identifier, controllerConstructor };\n }\n}\nfunction identifierForContextKey(key) {\n const logicalName = (key.match(/^(?:\\.\\/)?(.+)(?:[_-]controller\\..+?)$/) || [])[1];\n if (logicalName) {\n return logicalName.replace(/_/g, \"-\").replace(/\\//g, \"--\");\n }\n}\n\nexport { definitionForModuleAndIdentifier, definitionForModuleWithContextAndKey, definitionsFromContext, identifierForContextKey };\n","import { SuperchartChartjsController, parseContentsAsJSON } from '@supercharts/stimulus-base'\nimport * as d3 from \"d3\"\n\nexport default class extends SuperchartChartjsController {\n static targets = [ \"chartjsOptions\", \"chartjsData\", \"chartjsCanvas\", \"csvData\" ]\n static values = {\n type: { \n type: String,\n default: \"line\"\n }\n }\n \n static defaultCssProperties = {\n '--animation-duration': 200, // milliseconds\n '--axis-color': '#999',\n '--grid-color': '#eee',\n '--line-color': '#aaa',\n '--point-color': '#333',\n '--point-stroke-color': '#fff',\n '--point-stroke-color-hover': '#eee',\n '--bar-fill-color': '#999',\n '--bar-hover-fill-color': '#333',\n '--point-radius': 6,\n '--point-hover-radius': 10,\n '--point-border-width': 4,\n '--point-hover-border-width': 3,\n }\n \n connect() {\n super.connect()\n }\n \n updateChart() {\n super.updateChart()\n }\n \n describeDataForX(event) {\n const point = event?.tooltip?.dataPoints[0]\n const dataIndex = point.dataIndex\n this.dispatch(\"description-requested\", { detail: {\n label: this.csvData[dataIndex][this.csvData.columns[1]],\n value: this.csvData[dataIndex][this.csvData.columns[3]],\n show: !!event?.tooltip?.opacity\n } })\n }\n \n parseCsvData() {\n this.csvData = d3.csvParse(this.csvDataTarget.innerHTML.trim())\n console.log(this.csvData)\n }\n \n get chartjsData() {\n if (this.hasChartJsDataTarget) {\n return super.chartjsData()\n }\n if (!this.hasCsvDataTarget) {\n console.warn(`The chart needs data in a in a csv target or in a chartjsData target (in chart.js JSON)`)\n return []\n }\n \n this.parseCsvData()\n \n return {\n labels: this.csvData.map(d => d[this.csvData.columns[0]]),\n datasets: [{\n type: this.typeValue,\n label: \"Value\",\n data: this.csvData.map(d => d[this.csvData.columns[2]])\n }]\n }\n }\n \n get chartjsOptions() {\n let options = {\n ...this.defaultOptions\n }\n \n if (this.hasChartjsOptionsTarget) {\n options = {\n ...options,\n ...parseContentsAsJSON(this.chartjsOptionsTarget)\n }\n }\n \n return this.parseForCssVars(options)\n }\n \n get animationOptions() {\n if (this.runAnimations === false) { return false }\n return {\n x: {\n type: 'number',\n easing: 'linear',\n duration: this.delayBetweenPoints,\n from: NaN, // the point is initially skipped\n delay: (ctx) => {\n if (ctx.type !== 'data' || ctx.xStarted) {\n return 0;\n }\n ctx.xStarted = true;\n return ctx.index * this.delayBetweenPoints;\n }\n },\n y: {\n type: 'number',\n easing: 'linear',\n duration: this.delayBetweenPoints,\n from: previousY,\n delay: (ctx) => {\n if (ctx.type !== 'data' || ctx.yStarted) {\n return 0;\n }\n ctx.yStarted = true;\n return ctx.index * this.delayBetweenPoints;\n }\n }\n }\n }\n\n // You can set default options in this getter for all your charts.\n get defaultOptions() {\n const axisColor = this.cssPropertyValue('--axis-color')\n return {\n maintainAspectRatio: false,\n animation: this.animationOptions,\n interaction: {\n mode: 'index',\n intersect: false,\n },\n resizeDelay: 200, // milliseconds\n onResize: this.handleResize.bind(this),\n plugins: {\n legend: {\n display: false,\n },\n tooltip: {\n enabled: false,\n position: 'nearest',\n external: this.describeDataForX.bind(this)\n }\n },\n color: axisColor,\n fill: false,\n lineTension: 0.3,\n borderColor: this.cssPropertyValue('--line-color'),\n borderCapStyle: \"butt\",\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: \"miter\",\n pointBorderColor: this.cssPropertyValue('--point-stroke-color'),\n pointBackgroundColor: this.cssPropertyValue('--point-color'),\n pointHoverBackgroundColor: this.cssPropertyValue('--point-color'),\n pointHoverBorderColor: this.cssPropertyValue('--point-stroke-color-hover'),\n pointRadius: Number(this.cssPropertyValue('--point-radius')),\n pointHoverRadius: Number(this.cssPropertyValue('--point-hover-radius')),\n pointBorderWidth: Number(this.cssPropertyValue('--point-border-width')),\n pointHoverBorderWidth: Number(this.cssPropertyValue('--point-hover-border-width')),\n pointHitRadius: 10,\n backgroundColor: this.cssPropertyValue('--bar-fill-color'),\n hoverBackgroundColor: this.cssPropertyValue('--bar-hover-fill-color'),\n spanGaps: false,\n scales: {\n x: {\n grid: {\n color: this.cssPropertyValue('--grid-color'),\n borderColor: axisColor,\n tickColor: axisColor,\n },\n ticks: {\n color: axisColor,\n tickColor: axisColor\n }\n },\n y: {\n grid: {\n color: this.cssPropertyValue('--grid-color'),\n borderColor: axisColor,\n tickColor: axisColor,\n },\n ticks: {\n color: axisColor,\n tickColor: axisColor\n },\n suggestedMin: 0,\n suggestedMax: 10\n }\n }\n }\n }\n \n get delayBetweenPoints() {\n return this.cssPropertyValue('--animation-duration') / this.chartjsData?.datasets[0]?.data?.length\n }\n}\n\nfunction previousY (ctx) {\n return ctx.index === 0 ? ctx.chart.scales.y.getPixelForValue(100) : ctx.chart.getDatasetMeta(ctx.datasetIndex).data[ctx.index - 1].getProps(['y'], true).y;\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ \"overallDescription\", \"contextualDescription\", \"contextualDescriptionTemplate\" ]\n static classes = [ \"hideOverallDescription\", \"hideContextualDescription\" ]\n \n showDescriptionWith(event) {\n if (!event?.detail?.show) {\n this.hideContextualDescription()\n this.showOverallDescription()\n return\n }\n \n this.hideOverallDescription()\n const value = event?.detail?.value\n const label = event?.detail?.label\n let newHTML = this.contextualDescriptionTemplateTarget.innerHTML\n this.contextualDescriptionTarget.innerHTML = newHTML\n .replaceAll(\"%value%\", value)\n .replaceAll(\"%label%\", label)\n this.showContextualDescription()\n }\n \n hideOverallDescription() {\n this.overallDescriptionTarget.classList.add(...this.hideOverallDescriptionClasses)\n }\n \n showOverallDescription() {\n this.overallDescriptionTarget.classList.remove(...this.hideOverallDescriptionClasses)\n }\n \n hideContextualDescription() {\n this.contextualDescriptionTarget.classList.add(...this.hideContextualDescriptionClasses)\n }\n \n showContextualDescription() {\n this.contextualDescriptionTarget.classList.remove(...this.hideContextualDescriptionClasses)\n }\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ \"chartSourceData\", \"chart\" ]\n static values = {\n eventName: {\n type: String,\n default: \"update-chart\"\n }\n }\n \n updateChart(event) {\n this.chartSourceDataTarget.innerHTML = event.detail.dataElement.innerHTML\n event.detail.dataElement.remove()\n this.chartTarget.dispatchEvent(new CustomEvent(this.eventNameValue))\n }\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ \"data\" ]\n static values = {\n eventName: {\n type: String,\n default: \"superchart:update-chart\"\n }\n }\n \n connect() {\n this.element.dispatchEvent(\n new CustomEvent(this.eventNameValue, {\n detail: { dataElement: this.dataTarget },\n bubbles: true,\n cancelable: true\n })\n )\n }\n}","import { identifierForContextKey } from \"@hotwired/stimulus-webpack-helpers\"\n\nimport SuperchartController from \"./superchart_controller\"\nimport DescribableController from \"./supercharts/describable_controller\"\nimport FilterableController from \"./supercharts/filterable_controller\"\nimport FiltersController from \"./supercharts/filters_controller\"\n\nexport const controllerDefinitions = [\n [SuperchartController, \"superchart_controller.js\"],\n [DescribableController, \"supercharts/describable_controller.js\"],\n [FilterableController, \"supercharts/filterable_controller.js\"],\n [FiltersController, \"supercharts/filters_controller.js\"],\n].map(function(d) {\n const key = d[1]\n const controller = d[0]\n return {\n identifier: identifierForContextKey(key),\n controllerConstructor: controller\n }\n})\n\nexport {\n SuperchartController,\n DescribableController,\n FilterableController,\n FiltersController,\n}\n"],"names":["identifierForContextKey","key","logicalName","match","replace","_class","connect","super","updateChart","describeDataForX","event","_event$tooltip","_event$tooltip2","tooltip","dataPoints","dataIndex","this","dispatch","detail","label","csvData","columns","value","show","opacity","parseCsvData","d3","csvParse","csvDataTarget","innerHTML","trim","console","log","chartjsData","hasChartJsDataTarget","hasCsvDataTarget","labels","map","d","datasets","type","typeValue","data","warn","chartjsOptions","options","defaultOptions","hasChartjsOptionsTarget","parseContentsAsJSON","chartjsOptionsTarget","parseForCssVars","animationOptions","runAnimations","x","easing","duration","delayBetweenPoints","from","NaN","delay","ctx","xStarted","index","y","previousY","yStarted","axisColor","cssPropertyValue","maintainAspectRatio","animation","interaction","mode","intersect","resizeDelay","onResize","handleResize","bind","plugins","legend","display","enabled","position","external","color","fill","lineTension","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","pointBorderColor","pointBackgroundColor","pointHoverBackgroundColor","pointHoverBorderColor","pointRadius","Number","pointHoverRadius","pointBorderWidth","pointHoverBorderWidth","pointHitRadius","backgroundColor","hoverBackgroundColor","spanGaps","scales","grid","tickColor","ticks","suggestedMin","suggestedMax","_this$chartjsData","_this$chartjsData$dat","_this$chartjsData$dat2","length","chart","getPixelForValue","getDatasetMeta","datasetIndex","getProps","targets","values","String","default","defaultCssProperties","Controller","showDescriptionWith","_event$detail","_event$detail2","_event$detail3","hideContextualDescription","showOverallDescription","hideOverallDescription","contextualDescriptionTarget","contextualDescriptionTemplateTarget","replaceAll","showContextualDescription","overallDescriptionTarget","classList","add","hideOverallDescriptionClasses","remove","hideContextualDescriptionClasses","classes","chartSourceDataTarget","dataElement","chartTarget","dispatchEvent","CustomEvent","eventNameValue","eventName","element","dataTarget","bubbles","cancelable","controllerDefinitions","SuperchartController","DescribableController","FilterableController","FiltersController","controller","identifier","controllerConstructor"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"supercharts-bullet-train.esm.js","sources":["../../../node_modules/@hotwired/stimulus-webpack-helpers/dist/stimulus-webpack-helpers.js","../../javascript/controllers/superchart_controller.js","../../javascript/controllers/supercharts/describable_controller.js","../../javascript/controllers/supercharts/filterable_controller.js","../../javascript/controllers/supercharts/filters_controller.js","../../javascript/controllers/index.js"],"sourcesContent":["/*\nStimulus Webpack Helpers 1.0.0\nCopyright © 2021 Basecamp, LLC\n */\nfunction definitionsFromContext(context) {\n return context.keys()\n .map((key) => definitionForModuleWithContextAndKey(context, key))\n .filter((value) => value);\n}\nfunction definitionForModuleWithContextAndKey(context, key) {\n const identifier = identifierForContextKey(key);\n if (identifier) {\n return definitionForModuleAndIdentifier(context(key), identifier);\n }\n}\nfunction definitionForModuleAndIdentifier(module, identifier) {\n const controllerConstructor = module.default;\n if (typeof controllerConstructor == \"function\") {\n return { identifier, controllerConstructor };\n }\n}\nfunction identifierForContextKey(key) {\n const logicalName = (key.match(/^(?:\\.\\/)?(.+)(?:[_-]controller\\..+?)$/) || [])[1];\n if (logicalName) {\n return logicalName.replace(/_/g, \"-\").replace(/\\//g, \"--\");\n }\n}\n\nexport { definitionForModuleAndIdentifier, definitionForModuleWithContextAndKey, definitionsFromContext, identifierForContextKey };\n","import { SuperchartChartjsController, parseContentsAsJSON, parseContentsAsCsv } from '@supercharts/stimulus-base'\n\nexport default class extends SuperchartChartjsController {\n static targets = [ \"chartjsOptions\", \"chartjsData\", \"chartjsCanvas\", \"csvData\" ]\n static values = {\n type: { \n type: String,\n default: \"line\"\n }\n }\n \n static defaultCssProperties = {\n '--animation-duration': 200, // milliseconds\n '--axis-color': '#999',\n '--grid-color': '#eee',\n '--line-color': '#aaa',\n '--point-color': '#333',\n '--point-stroke-color': '#fff',\n '--point-stroke-color-hover': '#eee',\n '--bar-fill-color': '#999',\n '--bar-hover-fill-color': '#333',\n '--point-radius': 6,\n '--point-hover-radius': 10,\n '--point-border-width': 4,\n '--point-hover-border-width': 3,\n }\n \n connect() {\n super.connect()\n }\n \n updateChart() {\n super.updateChart()\n }\n \n describeDataForX(event) {\n const point = event?.tooltip?.dataPoints[0]\n const dataIndex = point.dataIndex\n this.dispatch(\"description-requested\", { detail: {\n label: this.csvData[dataIndex][this.csvData.columns[1]],\n value: this.csvData[dataIndex][this.csvData.columns[3]],\n show: !!event?.tooltip?.opacity\n } })\n }\n \n parseCsvData() {\n this.csvData = parseContentsAsCsv(this.csvDataTarget)\n }\n \n get chartjsData() {\n if (this.hasChartJsDataTarget) {\n return super.chartjsData()\n }\n if (!this.hasCsvDataTarget) {\n console.warn(`The chart needs data in a in a csv target or in a chartjsData target (in chart.js JSON)`)\n return []\n }\n \n this.parseCsvData()\n \n return {\n labels: this.csvData.map(d => d[this.csvData.columns[0]]),\n datasets: [{\n type: this.typeValue,\n label: \"Value\",\n data: this.csvData.map(d => d[this.csvData.columns[2]])\n }]\n }\n }\n \n get chartjsOptions() {\n let options = {\n ...this.defaultOptions\n }\n \n if (this.hasChartjsOptionsTarget) {\n options = {\n ...options,\n ...parseContentsAsJSON(this.chartjsOptionsTarget)\n }\n }\n \n return this.parseForCssVars(options)\n }\n \n get animationOptions() {\n if (this.runAnimations === false) { return false }\n return {\n x: {\n type: 'number',\n easing: 'linear',\n duration: this.delayBetweenPoints,\n from: NaN, // the point is initially skipped\n delay: (ctx) => {\n if (ctx.type !== 'data' || ctx.xStarted) {\n return 0;\n }\n ctx.xStarted = true;\n return ctx.index * this.delayBetweenPoints;\n }\n },\n y: {\n type: 'number',\n easing: 'linear',\n duration: this.delayBetweenPoints,\n from: previousY,\n delay: (ctx) => {\n if (ctx.type !== 'data' || ctx.yStarted) {\n return 0;\n }\n ctx.yStarted = true;\n return ctx.index * this.delayBetweenPoints;\n }\n }\n }\n }\n\n // You can set default options in this getter for all your charts.\n get defaultOptions() {\n const axisColor = this.cssPropertyValue('--axis-color')\n return {\n maintainAspectRatio: false,\n animation: this.animationOptions,\n interaction: {\n mode: 'index',\n intersect: false,\n },\n resizeDelay: 200, // milliseconds\n onResize: this.handleResize.bind(this),\n plugins: {\n legend: {\n display: false,\n },\n tooltip: {\n enabled: false,\n position: 'nearest',\n external: this.describeDataForX.bind(this)\n }\n },\n color: axisColor,\n fill: false,\n lineTension: 0.3,\n borderColor: this.cssPropertyValue('--line-color'),\n borderCapStyle: \"butt\",\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: \"miter\",\n pointBorderColor: this.cssPropertyValue('--point-stroke-color'),\n pointBackgroundColor: this.cssPropertyValue('--point-color'),\n pointHoverBackgroundColor: this.cssPropertyValue('--point-color'),\n pointHoverBorderColor: this.cssPropertyValue('--point-stroke-color-hover'),\n pointRadius: Number(this.cssPropertyValue('--point-radius')),\n pointHoverRadius: Number(this.cssPropertyValue('--point-hover-radius')),\n pointBorderWidth: Number(this.cssPropertyValue('--point-border-width')),\n pointHoverBorderWidth: Number(this.cssPropertyValue('--point-hover-border-width')),\n pointHitRadius: 10,\n backgroundColor: this.cssPropertyValue('--bar-fill-color'),\n hoverBackgroundColor: this.cssPropertyValue('--bar-hover-fill-color'),\n spanGaps: false,\n scales: {\n x: {\n grid: {\n color: this.cssPropertyValue('--grid-color'),\n borderColor: axisColor,\n tickColor: axisColor,\n },\n ticks: {\n color: axisColor,\n tickColor: axisColor\n }\n },\n y: {\n grid: {\n color: this.cssPropertyValue('--grid-color'),\n borderColor: axisColor,\n tickColor: axisColor,\n },\n ticks: {\n color: axisColor,\n tickColor: axisColor\n },\n suggestedMin: 0,\n suggestedMax: 10\n }\n }\n }\n }\n \n get delayBetweenPoints() {\n return this.cssPropertyValue('--animation-duration') / this.chartjsData?.datasets[0]?.data?.length\n }\n}\n\nfunction previousY (ctx) {\n return ctx.index === 0 ? ctx.chart.scales.y.getPixelForValue(100) : ctx.chart.getDatasetMeta(ctx.datasetIndex).data[ctx.index - 1].getProps(['y'], true).y;\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ \"overallDescription\", \"contextualDescription\", \"contextualDescriptionTemplate\" ]\n static classes = [ \"hideOverallDescription\", \"hideContextualDescription\" ]\n \n showDescriptionWith(event) {\n if (!event?.detail?.show) {\n this.hideContextualDescription()\n this.showOverallDescription()\n return\n }\n \n this.hideOverallDescription()\n const value = event?.detail?.value\n const label = event?.detail?.label\n let newHTML = this.contextualDescriptionTemplateTarget.innerHTML\n this.contextualDescriptionTarget.innerHTML = newHTML\n .replaceAll(\"%value%\", value)\n .replaceAll(\"%label%\", label)\n this.showContextualDescription()\n }\n \n hideOverallDescription() {\n this.overallDescriptionTarget.classList.add(...this.hideOverallDescriptionClasses)\n }\n \n showOverallDescription() {\n this.overallDescriptionTarget.classList.remove(...this.hideOverallDescriptionClasses)\n }\n \n hideContextualDescription() {\n this.contextualDescriptionTarget.classList.add(...this.hideContextualDescriptionClasses)\n }\n \n showContextualDescription() {\n this.contextualDescriptionTarget.classList.remove(...this.hideContextualDescriptionClasses)\n }\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ \"chartSourceData\", \"chart\" ]\n static values = {\n eventName: {\n type: String,\n default: \"update-chart\"\n }\n }\n \n updateChart(event) {\n this.chartSourceDataTarget.innerHTML = event.detail.dataElement.innerHTML\n event.detail.dataElement.remove()\n this.chartTarget.dispatchEvent(new CustomEvent(this.eventNameValue))\n }\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ \"data\" ]\n static values = {\n eventName: {\n type: String,\n default: \"superchart:update-chart\"\n }\n }\n \n connect() {\n this.element.dispatchEvent(\n new CustomEvent(this.eventNameValue, {\n detail: { dataElement: this.dataTarget },\n bubbles: true,\n cancelable: true\n })\n )\n }\n}","import { identifierForContextKey } from \"@hotwired/stimulus-webpack-helpers\"\n\nimport SuperchartController from \"./superchart_controller\"\nimport DescribableController from \"./supercharts/describable_controller\"\nimport FilterableController from \"./supercharts/filterable_controller\"\nimport FiltersController from \"./supercharts/filters_controller\"\n\nexport const controllerDefinitions = [\n [SuperchartController, \"superchart_controller.js\"],\n [DescribableController, \"supercharts/describable_controller.js\"],\n [FilterableController, \"supercharts/filterable_controller.js\"],\n [FiltersController, \"supercharts/filters_controller.js\"],\n].map(function(d) {\n const key = d[1]\n const controller = d[0]\n return {\n identifier: identifierForContextKey(key),\n controllerConstructor: controller\n }\n})\n\nexport {\n SuperchartController,\n DescribableController,\n FilterableController,\n FiltersController,\n}\n"],"names":["identifierForContextKey","key","logicalName","match","replace","SuperchartChartjsController","connect","super","updateChart","describeDataForX","event","dataIndex","tooltip","_event$tooltip","dataPoints","this","dispatch","detail","label","csvData","columns","value","show","_event$tooltip2","opacity","parseCsvData","parseContentsAsCsv","csvDataTarget","chartjsData","hasChartJsDataTarget","hasCsvDataTarget","labels","map","d","datasets","type","typeValue","data","console","warn","chartjsOptions","options","defaultOptions","hasChartjsOptionsTarget","parseContentsAsJSON","chartjsOptionsTarget","parseForCssVars","animationOptions","runAnimations","x","easing","duration","delayBetweenPoints","from","NaN","delay","ctx","xStarted","index","y","previousY","yStarted","axisColor","cssPropertyValue","maintainAspectRatio","animation","interaction","mode","intersect","resizeDelay","onResize","handleResize","bind","plugins","legend","display","enabled","position","external","color","fill","lineTension","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","pointBorderColor","pointBackgroundColor","pointHoverBackgroundColor","pointHoverBorderColor","pointRadius","Number","pointHoverRadius","pointBorderWidth","pointHoverBorderWidth","pointHitRadius","backgroundColor","hoverBackgroundColor","spanGaps","scales","grid","tickColor","ticks","suggestedMin","suggestedMax","_this$chartjsData","_this$chartjsData$dat","_this$chartjsData$dat2","length","chart","getPixelForValue","getDatasetMeta","datasetIndex","getProps","targets","values","String","default","defaultCssProperties","Controller","showDescriptionWith","_event$detail","_event$detail2","_event$detail3","hideContextualDescription","showOverallDescription","hideOverallDescription","contextualDescriptionTarget","innerHTML","contextualDescriptionTemplateTarget","replaceAll","showContextualDescription","overallDescriptionTarget","classList","add","hideOverallDescriptionClasses","remove","hideContextualDescriptionClasses","classes","chartSourceDataTarget","dataElement","chartTarget","dispatchEvent","CustomEvent","eventNameValue","eventName","_class","element","dataTarget","bubbles","cancelable","controllerDefinitions","SuperchartController","DescribableController","FilterableController","FiltersController","controller","identifier","controllerConstructor"],"mappings":"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"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
var t=require("@supercharts/stimulus-base"),e=require("
|
1
|
+
var t=require("@supercharts/stimulus-base"),e=require("@hotwired/stimulus");function r(t){const e=(t.match(/^(?:\.\/)?(.+)(?:[_-]controller\..+?)$/)||[])[1];if(e)return e.replace(/_/g,"-").replace(/\//g,"--")}class s extends t.SuperchartChartjsController{connect(){super.connect()}updateChart(){super.updateChart()}describeDataForX(t){var e,r;const s=(null==t||null==(e=t.tooltip)?void 0:e.dataPoints[0]).dataIndex;this.dispatch("description-requested",{detail:{label:this.csvData[s][this.csvData.columns[1]],value:this.csvData[s][this.csvData.columns[3]],show:!(null==t||null==(r=t.tooltip)||!r.opacity)}})}parseCsvData(){this.csvData=t.parseContentsAsCsv(this.csvDataTarget)}get chartjsData(){return this.hasChartJsDataTarget?super.chartjsData():this.hasCsvDataTarget?(this.parseCsvData(),{labels:this.csvData.map(t=>t[this.csvData.columns[0]]),datasets:[{type:this.typeValue,label:"Value",data:this.csvData.map(t=>t[this.csvData.columns[2]])}]}):(console.warn("The chart needs data in a in a csv target or in a chartjsData target (in chart.js JSON)"),[])}get chartjsOptions(){let e={...this.defaultOptions};return this.hasChartjsOptionsTarget&&(e={...e,...t.parseContentsAsJSON(this.chartjsOptionsTarget)}),this.parseForCssVars(e)}get animationOptions(){return!1!==this.runAnimations&&{x:{type:"number",easing:"linear",duration:this.delayBetweenPoints,from:NaN,delay:t=>"data"!==t.type||t.xStarted?0:(t.xStarted=!0,t.index*this.delayBetweenPoints)},y:{type:"number",easing:"linear",duration:this.delayBetweenPoints,from:a,delay:t=>"data"!==t.type||t.yStarted?0:(t.yStarted=!0,t.index*this.delayBetweenPoints)}}}get defaultOptions(){const t=this.cssPropertyValue("--axis-color");return{maintainAspectRatio:!1,animation:this.animationOptions,interaction:{mode:"index",intersect:!1},resizeDelay:200,onResize:this.handleResize.bind(this),plugins:{legend:{display:!1},tooltip:{enabled:!1,position:"nearest",external:this.describeDataForX.bind(this)}},color:t,fill:!1,lineTension:.3,borderColor:this.cssPropertyValue("--line-color"),borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",pointBorderColor:this.cssPropertyValue("--point-stroke-color"),pointBackgroundColor:this.cssPropertyValue("--point-color"),pointHoverBackgroundColor:this.cssPropertyValue("--point-color"),pointHoverBorderColor:this.cssPropertyValue("--point-stroke-color-hover"),pointRadius:Number(this.cssPropertyValue("--point-radius")),pointHoverRadius:Number(this.cssPropertyValue("--point-hover-radius")),pointBorderWidth:Number(this.cssPropertyValue("--point-border-width")),pointHoverBorderWidth:Number(this.cssPropertyValue("--point-hover-border-width")),pointHitRadius:10,backgroundColor:this.cssPropertyValue("--bar-fill-color"),hoverBackgroundColor:this.cssPropertyValue("--bar-hover-fill-color"),spanGaps:!1,scales:{x:{grid:{color:this.cssPropertyValue("--grid-color"),borderColor:t,tickColor:t},ticks:{color:t,tickColor:t}},y:{grid:{color:this.cssPropertyValue("--grid-color"),borderColor:t,tickColor:t},ticks:{color:t,tickColor:t},suggestedMin:0,suggestedMax:10}}}}get delayBetweenPoints(){var t,e,r;return this.cssPropertyValue("--animation-duration")/(null==(t=this.chartjsData)||null==(e=t.datasets[0])||null==(r=e.data)?void 0:r.length)}}function a(t){return 0===t.index?t.chart.scales.y.getPixelForValue(100):t.chart.getDatasetMeta(t.datasetIndex).data[t.index-1].getProps(["y"],!0).y}s.targets=["chartjsOptions","chartjsData","chartjsCanvas","csvData"],s.values={type:{type:String,default:"line"}},s.defaultCssProperties={"--animation-duration":200,"--axis-color":"#999","--grid-color":"#eee","--line-color":"#aaa","--point-color":"#333","--point-stroke-color":"#fff","--point-stroke-color-hover":"#eee","--bar-fill-color":"#999","--bar-hover-fill-color":"#333","--point-radius":6,"--point-hover-radius":10,"--point-border-width":4,"--point-hover-border-width":3};class o extends e.Controller{showDescriptionWith(t){var e,r,s;if(null==t||null==(e=t.detail)||!e.show)return this.hideContextualDescription(),void this.showOverallDescription();this.hideOverallDescription();const a=null==t||null==(r=t.detail)?void 0:r.value,o=null==t||null==(s=t.detail)?void 0:s.label;this.contextualDescriptionTarget.innerHTML=this.contextualDescriptionTemplateTarget.innerHTML.replaceAll("%value%",a).replaceAll("%label%",o),this.showContextualDescription()}hideOverallDescription(){this.overallDescriptionTarget.classList.add(...this.hideOverallDescriptionClasses)}showOverallDescription(){this.overallDescriptionTarget.classList.remove(...this.hideOverallDescriptionClasses)}hideContextualDescription(){this.contextualDescriptionTarget.classList.add(...this.hideContextualDescriptionClasses)}showContextualDescription(){this.contextualDescriptionTarget.classList.remove(...this.hideContextualDescriptionClasses)}}o.targets=["overallDescription","contextualDescription","contextualDescriptionTemplate"],o.classes=["hideOverallDescription","hideContextualDescription"];class i extends e.Controller{updateChart(t){this.chartSourceDataTarget.innerHTML=t.detail.dataElement.innerHTML,t.detail.dataElement.remove(),this.chartTarget.dispatchEvent(new CustomEvent(this.eventNameValue))}}i.targets=["chartSourceData","chart"],i.values={eventName:{type:String,default:"update-chart"}};class l extends e.Controller{connect(){this.element.dispatchEvent(new CustomEvent(this.eventNameValue,{detail:{dataElement:this.dataTarget},bubbles:!0,cancelable:!0}))}}l.targets=["data"],l.values={eventName:{type:String,default:"superchart:update-chart"}};const n=[[s,"superchart_controller.js"],[o,"supercharts/describable_controller.js"],[i,"supercharts/filterable_controller.js"],[l,"supercharts/filters_controller.js"]].map(function(t){const e=t[0];return{identifier:r(t[1]),controllerConstructor:e}});exports.DescribableController=o,exports.FilterableController=i,exports.FiltersController=l,exports.SuperchartController=s,exports.controllerDefinitions=n;
|
2
2
|
//# sourceMappingURL=supercharts-bullet-train.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"supercharts-bullet-train.js","sources":["../../../node_modules/@hotwired/stimulus-webpack-helpers/dist/stimulus-webpack-helpers.js","../../javascript/controllers/superchart_controller.js","../../javascript/controllers/supercharts/describable_controller.js","../../javascript/controllers/supercharts/filterable_controller.js","../../javascript/controllers/supercharts/filters_controller.js","../../javascript/controllers/index.js"],"sourcesContent":["/*\nStimulus Webpack Helpers 1.0.0\nCopyright © 2021 Basecamp, LLC\n */\nfunction definitionsFromContext(context) {\n return context.keys()\n .map((key) => definitionForModuleWithContextAndKey(context, key))\n .filter((value) => value);\n}\nfunction definitionForModuleWithContextAndKey(context, key) {\n const identifier = identifierForContextKey(key);\n if (identifier) {\n return definitionForModuleAndIdentifier(context(key), identifier);\n }\n}\nfunction definitionForModuleAndIdentifier(module, identifier) {\n const controllerConstructor = module.default;\n if (typeof controllerConstructor == \"function\") {\n return { identifier, controllerConstructor };\n }\n}\nfunction identifierForContextKey(key) {\n const logicalName = (key.match(/^(?:\\.\\/)?(.+)(?:[_-]controller\\..+?)$/) || [])[1];\n if (logicalName) {\n return logicalName.replace(/_/g, \"-\").replace(/\\//g, \"--\");\n }\n}\n\nexport { definitionForModuleAndIdentifier, definitionForModuleWithContextAndKey, definitionsFromContext, identifierForContextKey };\n","import { SuperchartChartjsController, parseContentsAsJSON } from '@supercharts/stimulus-base'\nimport * as d3 from \"d3\"\n\nexport default class extends SuperchartChartjsController {\n static targets = [ \"chartjsOptions\", \"chartjsData\", \"chartjsCanvas\", \"csvData\" ]\n static values = {\n type: { \n type: String,\n default: \"line\"\n }\n }\n \n static defaultCssProperties = {\n '--animation-duration': 200, // milliseconds\n '--axis-color': '#999',\n '--grid-color': '#eee',\n '--line-color': '#aaa',\n '--point-color': '#333',\n '--point-stroke-color': '#fff',\n '--point-stroke-color-hover': '#eee',\n '--bar-fill-color': '#999',\n '--bar-hover-fill-color': '#333',\n '--point-radius': 6,\n '--point-hover-radius': 10,\n '--point-border-width': 4,\n '--point-hover-border-width': 3,\n }\n \n connect() {\n super.connect()\n }\n \n updateChart() {\n super.updateChart()\n }\n \n describeDataForX(event) {\n const point = event?.tooltip?.dataPoints[0]\n const dataIndex = point.dataIndex\n this.dispatch(\"description-requested\", { detail: {\n label: this.csvData[dataIndex][this.csvData.columns[1]],\n value: this.csvData[dataIndex][this.csvData.columns[3]],\n show: !!event?.tooltip?.opacity\n } })\n }\n \n parseCsvData() {\n this.csvData = d3.csvParse(this.csvDataTarget.innerHTML.trim())\n console.log(this.csvData)\n }\n \n get chartjsData() {\n if (this.hasChartJsDataTarget) {\n return super.chartjsData()\n }\n if (!this.hasCsvDataTarget) {\n console.warn(`The chart needs data in a in a csv target or in a chartjsData target (in chart.js JSON)`)\n return []\n }\n \n this.parseCsvData()\n \n return {\n labels: this.csvData.map(d => d[this.csvData.columns[0]]),\n datasets: [{\n type: this.typeValue,\n label: \"Value\",\n data: this.csvData.map(d => d[this.csvData.columns[2]])\n }]\n }\n }\n \n get chartjsOptions() {\n let options = {\n ...this.defaultOptions\n }\n \n if (this.hasChartjsOptionsTarget) {\n options = {\n ...options,\n ...parseContentsAsJSON(this.chartjsOptionsTarget)\n }\n }\n \n return this.parseForCssVars(options)\n }\n \n get animationOptions() {\n if (this.runAnimations === false) { return false }\n return {\n x: {\n type: 'number',\n easing: 'linear',\n duration: this.delayBetweenPoints,\n from: NaN, // the point is initially skipped\n delay: (ctx) => {\n if (ctx.type !== 'data' || ctx.xStarted) {\n return 0;\n }\n ctx.xStarted = true;\n return ctx.index * this.delayBetweenPoints;\n }\n },\n y: {\n type: 'number',\n easing: 'linear',\n duration: this.delayBetweenPoints,\n from: previousY,\n delay: (ctx) => {\n if (ctx.type !== 'data' || ctx.yStarted) {\n return 0;\n }\n ctx.yStarted = true;\n return ctx.index * this.delayBetweenPoints;\n }\n }\n }\n }\n\n // You can set default options in this getter for all your charts.\n get defaultOptions() {\n const axisColor = this.cssPropertyValue('--axis-color')\n return {\n maintainAspectRatio: false,\n animation: this.animationOptions,\n interaction: {\n mode: 'index',\n intersect: false,\n },\n resizeDelay: 200, // milliseconds\n onResize: this.handleResize.bind(this),\n plugins: {\n legend: {\n display: false,\n },\n tooltip: {\n enabled: false,\n position: 'nearest',\n external: this.describeDataForX.bind(this)\n }\n },\n color: axisColor,\n fill: false,\n lineTension: 0.3,\n borderColor: this.cssPropertyValue('--line-color'),\n borderCapStyle: \"butt\",\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: \"miter\",\n pointBorderColor: this.cssPropertyValue('--point-stroke-color'),\n pointBackgroundColor: this.cssPropertyValue('--point-color'),\n pointHoverBackgroundColor: this.cssPropertyValue('--point-color'),\n pointHoverBorderColor: this.cssPropertyValue('--point-stroke-color-hover'),\n pointRadius: Number(this.cssPropertyValue('--point-radius')),\n pointHoverRadius: Number(this.cssPropertyValue('--point-hover-radius')),\n pointBorderWidth: Number(this.cssPropertyValue('--point-border-width')),\n pointHoverBorderWidth: Number(this.cssPropertyValue('--point-hover-border-width')),\n pointHitRadius: 10,\n backgroundColor: this.cssPropertyValue('--bar-fill-color'),\n hoverBackgroundColor: this.cssPropertyValue('--bar-hover-fill-color'),\n spanGaps: false,\n scales: {\n x: {\n grid: {\n color: this.cssPropertyValue('--grid-color'),\n borderColor: axisColor,\n tickColor: axisColor,\n },\n ticks: {\n color: axisColor,\n tickColor: axisColor\n }\n },\n y: {\n grid: {\n color: this.cssPropertyValue('--grid-color'),\n borderColor: axisColor,\n tickColor: axisColor,\n },\n ticks: {\n color: axisColor,\n tickColor: axisColor\n },\n suggestedMin: 0,\n suggestedMax: 10\n }\n }\n }\n }\n \n get delayBetweenPoints() {\n return this.cssPropertyValue('--animation-duration') / this.chartjsData?.datasets[0]?.data?.length\n }\n}\n\nfunction previousY (ctx) {\n return ctx.index === 0 ? ctx.chart.scales.y.getPixelForValue(100) : ctx.chart.getDatasetMeta(ctx.datasetIndex).data[ctx.index - 1].getProps(['y'], true).y;\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ \"overallDescription\", \"contextualDescription\", \"contextualDescriptionTemplate\" ]\n static classes = [ \"hideOverallDescription\", \"hideContextualDescription\" ]\n \n showDescriptionWith(event) {\n if (!event?.detail?.show) {\n this.hideContextualDescription()\n this.showOverallDescription()\n return\n }\n \n this.hideOverallDescription()\n const value = event?.detail?.value\n const label = event?.detail?.label\n let newHTML = this.contextualDescriptionTemplateTarget.innerHTML\n this.contextualDescriptionTarget.innerHTML = newHTML\n .replaceAll(\"%value%\", value)\n .replaceAll(\"%label%\", label)\n this.showContextualDescription()\n }\n \n hideOverallDescription() {\n this.overallDescriptionTarget.classList.add(...this.hideOverallDescriptionClasses)\n }\n \n showOverallDescription() {\n this.overallDescriptionTarget.classList.remove(...this.hideOverallDescriptionClasses)\n }\n \n hideContextualDescription() {\n this.contextualDescriptionTarget.classList.add(...this.hideContextualDescriptionClasses)\n }\n \n showContextualDescription() {\n this.contextualDescriptionTarget.classList.remove(...this.hideContextualDescriptionClasses)\n }\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ \"chartSourceData\", \"chart\" ]\n static values = {\n eventName: {\n type: String,\n default: \"update-chart\"\n }\n }\n \n updateChart(event) {\n this.chartSourceDataTarget.innerHTML = event.detail.dataElement.innerHTML\n event.detail.dataElement.remove()\n this.chartTarget.dispatchEvent(new CustomEvent(this.eventNameValue))\n }\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ \"data\" ]\n static values = {\n eventName: {\n type: String,\n default: \"superchart:update-chart\"\n }\n }\n \n connect() {\n this.element.dispatchEvent(\n new CustomEvent(this.eventNameValue, {\n detail: { dataElement: this.dataTarget },\n bubbles: true,\n cancelable: true\n })\n )\n }\n}","import { identifierForContextKey } from \"@hotwired/stimulus-webpack-helpers\"\n\nimport SuperchartController from \"./superchart_controller\"\nimport DescribableController from \"./supercharts/describable_controller\"\nimport FilterableController from \"./supercharts/filterable_controller\"\nimport FiltersController from \"./supercharts/filters_controller\"\n\nexport const controllerDefinitions = [\n [SuperchartController, \"superchart_controller.js\"],\n [DescribableController, \"supercharts/describable_controller.js\"],\n [FilterableController, \"supercharts/filterable_controller.js\"],\n [FiltersController, \"supercharts/filters_controller.js\"],\n].map(function(d) {\n const key = d[1]\n const controller = d[0]\n return {\n identifier: identifierForContextKey(key),\n controllerConstructor: controller\n }\n})\n\nexport {\n SuperchartController,\n DescribableController,\n FilterableController,\n FiltersController,\n}\n"],"names":["identifierForContextKey","key","logicalName","match","replace","_class","connect","super","updateChart","describeDataForX","event","_event$tooltip","_event$tooltip2","tooltip","dataPoints","dataIndex","this","dispatch","detail","label","csvData","columns","value","show","opacity","parseCsvData","d3","csvParse","csvDataTarget","innerHTML","trim","console","log","chartjsData","hasChartJsDataTarget","hasCsvDataTarget","labels","map","d","datasets","type","typeValue","data","warn","chartjsOptions","options","defaultOptions","hasChartjsOptionsTarget","parseContentsAsJSON","chartjsOptionsTarget","parseForCssVars","animationOptions","runAnimations","x","easing","duration","delayBetweenPoints","from","NaN","delay","ctx","xStarted","index","y","previousY","yStarted","axisColor","cssPropertyValue","maintainAspectRatio","animation","interaction","mode","intersect","resizeDelay","onResize","handleResize","bind","plugins","legend","display","enabled","position","external","color","fill","lineTension","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","pointBorderColor","pointBackgroundColor","pointHoverBackgroundColor","pointHoverBorderColor","pointRadius","Number","pointHoverRadius","pointBorderWidth","pointHoverBorderWidth","pointHitRadius","backgroundColor","hoverBackgroundColor","spanGaps","scales","grid","tickColor","ticks","suggestedMin","suggestedMax","_this$chartjsData","_this$chartjsData$dat","_this$chartjsData$dat2","length","chart","getPixelForValue","getDatasetMeta","datasetIndex","getProps","targets","values","String","default","defaultCssProperties","Controller","showDescriptionWith","_event$detail","_event$detail2","_event$detail3","hideContextualDescription","showOverallDescription","hideOverallDescription","contextualDescriptionTarget","contextualDescriptionTemplateTarget","replaceAll","showContextualDescription","overallDescriptionTarget","classList","add","hideOverallDescriptionClasses","remove","hideContextualDescriptionClasses","classes","chartSourceDataTarget","dataElement","chartTarget","dispatchEvent","CustomEvent","eventNameValue","eventName","element","dataTarget","bubbles","cancelable","controllerDefinitions","SuperchartController","DescribableController","FilterableController","FiltersController","controller","identifier","controllerConstructor"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"supercharts-bullet-train.js","sources":["../../../node_modules/@hotwired/stimulus-webpack-helpers/dist/stimulus-webpack-helpers.js","../../javascript/controllers/superchart_controller.js","../../javascript/controllers/supercharts/describable_controller.js","../../javascript/controllers/supercharts/filterable_controller.js","../../javascript/controllers/supercharts/filters_controller.js","../../javascript/controllers/index.js"],"sourcesContent":["/*\nStimulus Webpack Helpers 1.0.0\nCopyright © 2021 Basecamp, LLC\n */\nfunction definitionsFromContext(context) {\n return context.keys()\n .map((key) => definitionForModuleWithContextAndKey(context, key))\n .filter((value) => value);\n}\nfunction definitionForModuleWithContextAndKey(context, key) {\n const identifier = identifierForContextKey(key);\n if (identifier) {\n return definitionForModuleAndIdentifier(context(key), identifier);\n }\n}\nfunction definitionForModuleAndIdentifier(module, identifier) {\n const controllerConstructor = module.default;\n if (typeof controllerConstructor == \"function\") {\n return { identifier, controllerConstructor };\n }\n}\nfunction identifierForContextKey(key) {\n const logicalName = (key.match(/^(?:\\.\\/)?(.+)(?:[_-]controller\\..+?)$/) || [])[1];\n if (logicalName) {\n return logicalName.replace(/_/g, \"-\").replace(/\\//g, \"--\");\n }\n}\n\nexport { definitionForModuleAndIdentifier, definitionForModuleWithContextAndKey, definitionsFromContext, identifierForContextKey };\n","import { SuperchartChartjsController, parseContentsAsJSON, parseContentsAsCsv } from '@supercharts/stimulus-base'\n\nexport default class extends SuperchartChartjsController {\n static targets = [ \"chartjsOptions\", \"chartjsData\", \"chartjsCanvas\", \"csvData\" ]\n static values = {\n type: { \n type: String,\n default: \"line\"\n }\n }\n \n static defaultCssProperties = {\n '--animation-duration': 200, // milliseconds\n '--axis-color': '#999',\n '--grid-color': '#eee',\n '--line-color': '#aaa',\n '--point-color': '#333',\n '--point-stroke-color': '#fff',\n '--point-stroke-color-hover': '#eee',\n '--bar-fill-color': '#999',\n '--bar-hover-fill-color': '#333',\n '--point-radius': 6,\n '--point-hover-radius': 10,\n '--point-border-width': 4,\n '--point-hover-border-width': 3,\n }\n \n connect() {\n super.connect()\n }\n \n updateChart() {\n super.updateChart()\n }\n \n describeDataForX(event) {\n const point = event?.tooltip?.dataPoints[0]\n const dataIndex = point.dataIndex\n this.dispatch(\"description-requested\", { detail: {\n label: this.csvData[dataIndex][this.csvData.columns[1]],\n value: this.csvData[dataIndex][this.csvData.columns[3]],\n show: !!event?.tooltip?.opacity\n } })\n }\n \n parseCsvData() {\n this.csvData = parseContentsAsCsv(this.csvDataTarget)\n }\n \n get chartjsData() {\n if (this.hasChartJsDataTarget) {\n return super.chartjsData()\n }\n if (!this.hasCsvDataTarget) {\n console.warn(`The chart needs data in a in a csv target or in a chartjsData target (in chart.js JSON)`)\n return []\n }\n \n this.parseCsvData()\n \n return {\n labels: this.csvData.map(d => d[this.csvData.columns[0]]),\n datasets: [{\n type: this.typeValue,\n label: \"Value\",\n data: this.csvData.map(d => d[this.csvData.columns[2]])\n }]\n }\n }\n \n get chartjsOptions() {\n let options = {\n ...this.defaultOptions\n }\n \n if (this.hasChartjsOptionsTarget) {\n options = {\n ...options,\n ...parseContentsAsJSON(this.chartjsOptionsTarget)\n }\n }\n \n return this.parseForCssVars(options)\n }\n \n get animationOptions() {\n if (this.runAnimations === false) { return false }\n return {\n x: {\n type: 'number',\n easing: 'linear',\n duration: this.delayBetweenPoints,\n from: NaN, // the point is initially skipped\n delay: (ctx) => {\n if (ctx.type !== 'data' || ctx.xStarted) {\n return 0;\n }\n ctx.xStarted = true;\n return ctx.index * this.delayBetweenPoints;\n }\n },\n y: {\n type: 'number',\n easing: 'linear',\n duration: this.delayBetweenPoints,\n from: previousY,\n delay: (ctx) => {\n if (ctx.type !== 'data' || ctx.yStarted) {\n return 0;\n }\n ctx.yStarted = true;\n return ctx.index * this.delayBetweenPoints;\n }\n }\n }\n }\n\n // You can set default options in this getter for all your charts.\n get defaultOptions() {\n const axisColor = this.cssPropertyValue('--axis-color')\n return {\n maintainAspectRatio: false,\n animation: this.animationOptions,\n interaction: {\n mode: 'index',\n intersect: false,\n },\n resizeDelay: 200, // milliseconds\n onResize: this.handleResize.bind(this),\n plugins: {\n legend: {\n display: false,\n },\n tooltip: {\n enabled: false,\n position: 'nearest',\n external: this.describeDataForX.bind(this)\n }\n },\n color: axisColor,\n fill: false,\n lineTension: 0.3,\n borderColor: this.cssPropertyValue('--line-color'),\n borderCapStyle: \"butt\",\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: \"miter\",\n pointBorderColor: this.cssPropertyValue('--point-stroke-color'),\n pointBackgroundColor: this.cssPropertyValue('--point-color'),\n pointHoverBackgroundColor: this.cssPropertyValue('--point-color'),\n pointHoverBorderColor: this.cssPropertyValue('--point-stroke-color-hover'),\n pointRadius: Number(this.cssPropertyValue('--point-radius')),\n pointHoverRadius: Number(this.cssPropertyValue('--point-hover-radius')),\n pointBorderWidth: Number(this.cssPropertyValue('--point-border-width')),\n pointHoverBorderWidth: Number(this.cssPropertyValue('--point-hover-border-width')),\n pointHitRadius: 10,\n backgroundColor: this.cssPropertyValue('--bar-fill-color'),\n hoverBackgroundColor: this.cssPropertyValue('--bar-hover-fill-color'),\n spanGaps: false,\n scales: {\n x: {\n grid: {\n color: this.cssPropertyValue('--grid-color'),\n borderColor: axisColor,\n tickColor: axisColor,\n },\n ticks: {\n color: axisColor,\n tickColor: axisColor\n }\n },\n y: {\n grid: {\n color: this.cssPropertyValue('--grid-color'),\n borderColor: axisColor,\n tickColor: axisColor,\n },\n ticks: {\n color: axisColor,\n tickColor: axisColor\n },\n suggestedMin: 0,\n suggestedMax: 10\n }\n }\n }\n }\n \n get delayBetweenPoints() {\n return this.cssPropertyValue('--animation-duration') / this.chartjsData?.datasets[0]?.data?.length\n }\n}\n\nfunction previousY (ctx) {\n return ctx.index === 0 ? ctx.chart.scales.y.getPixelForValue(100) : ctx.chart.getDatasetMeta(ctx.datasetIndex).data[ctx.index - 1].getProps(['y'], true).y;\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ \"overallDescription\", \"contextualDescription\", \"contextualDescriptionTemplate\" ]\n static classes = [ \"hideOverallDescription\", \"hideContextualDescription\" ]\n \n showDescriptionWith(event) {\n if (!event?.detail?.show) {\n this.hideContextualDescription()\n this.showOverallDescription()\n return\n }\n \n this.hideOverallDescription()\n const value = event?.detail?.value\n const label = event?.detail?.label\n let newHTML = this.contextualDescriptionTemplateTarget.innerHTML\n this.contextualDescriptionTarget.innerHTML = newHTML\n .replaceAll(\"%value%\", value)\n .replaceAll(\"%label%\", label)\n this.showContextualDescription()\n }\n \n hideOverallDescription() {\n this.overallDescriptionTarget.classList.add(...this.hideOverallDescriptionClasses)\n }\n \n showOverallDescription() {\n this.overallDescriptionTarget.classList.remove(...this.hideOverallDescriptionClasses)\n }\n \n hideContextualDescription() {\n this.contextualDescriptionTarget.classList.add(...this.hideContextualDescriptionClasses)\n }\n \n showContextualDescription() {\n this.contextualDescriptionTarget.classList.remove(...this.hideContextualDescriptionClasses)\n }\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ \"chartSourceData\", \"chart\" ]\n static values = {\n eventName: {\n type: String,\n default: \"update-chart\"\n }\n }\n \n updateChart(event) {\n this.chartSourceDataTarget.innerHTML = event.detail.dataElement.innerHTML\n event.detail.dataElement.remove()\n this.chartTarget.dispatchEvent(new CustomEvent(this.eventNameValue))\n }\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ \"data\" ]\n static values = {\n eventName: {\n type: String,\n default: \"superchart:update-chart\"\n }\n }\n \n connect() {\n this.element.dispatchEvent(\n new CustomEvent(this.eventNameValue, {\n detail: { dataElement: this.dataTarget },\n bubbles: true,\n cancelable: true\n })\n )\n }\n}","import { identifierForContextKey } from \"@hotwired/stimulus-webpack-helpers\"\n\nimport SuperchartController from \"./superchart_controller\"\nimport DescribableController from \"./supercharts/describable_controller\"\nimport FilterableController from \"./supercharts/filterable_controller\"\nimport FiltersController from \"./supercharts/filters_controller\"\n\nexport const controllerDefinitions = [\n [SuperchartController, \"superchart_controller.js\"],\n [DescribableController, \"supercharts/describable_controller.js\"],\n [FilterableController, \"supercharts/filterable_controller.js\"],\n [FiltersController, \"supercharts/filters_controller.js\"],\n].map(function(d) {\n const key = d[1]\n const controller = d[0]\n return {\n identifier: identifierForContextKey(key),\n controllerConstructor: controller\n }\n})\n\nexport {\n SuperchartController,\n DescribableController,\n FilterableController,\n FiltersController,\n}\n"],"names":["identifierForContextKey","key","logicalName","match","replace","SuperchartChartjsController","connect","super","updateChart","describeDataForX","event","dataIndex","tooltip","_event$tooltip","dataPoints","this","dispatch","detail","label","csvData","columns","value","show","_event$tooltip2","opacity","parseCsvData","parseContentsAsCsv","csvDataTarget","chartjsData","hasChartJsDataTarget","hasCsvDataTarget","labels","map","d","datasets","type","typeValue","data","console","warn","chartjsOptions","options","defaultOptions","hasChartjsOptionsTarget","parseContentsAsJSON","chartjsOptionsTarget","parseForCssVars","animationOptions","runAnimations","x","easing","duration","delayBetweenPoints","from","NaN","delay","ctx","xStarted","index","y","previousY","yStarted","axisColor","cssPropertyValue","maintainAspectRatio","animation","interaction","mode","intersect","resizeDelay","onResize","handleResize","bind","plugins","legend","display","enabled","position","external","color","fill","lineTension","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","pointBorderColor","pointBackgroundColor","pointHoverBackgroundColor","pointHoverBorderColor","pointRadius","Number","pointHoverRadius","pointBorderWidth","pointHoverBorderWidth","pointHitRadius","backgroundColor","hoverBackgroundColor","spanGaps","scales","grid","tickColor","ticks","suggestedMin","suggestedMax","_this$chartjsData","_this$chartjsData$dat","_this$chartjsData$dat2","length","chart","getPixelForValue","getDatasetMeta","datasetIndex","getProps","targets","values","String","default","defaultCssProperties","Controller","showDescriptionWith","_event$detail","_event$detail2","_event$detail3","hideContextualDescription","showOverallDescription","hideOverallDescription","contextualDescriptionTarget","innerHTML","contextualDescriptionTemplateTarget","replaceAll","showContextualDescription","overallDescriptionTarget","classList","add","hideOverallDescriptionClasses","remove","hideContextualDescriptionClasses","classes","chartSourceDataTarget","dataElement","chartTarget","dispatchEvent","CustomEvent","eventNameValue","eventName","_class","element","dataTarget","bubbles","cancelable","controllerDefinitions","SuperchartController","DescribableController","FilterableController","FiltersController","controller","identifier","controllerConstructor"],"mappings":"4EAqBA,SAASA,EAAwBC,GAC7B,MAAMC,GAAeD,EAAIE,MAAM,2CAA6C,IAAI,GAChF,GAAID,EACA,OAAOA,EAAYE,QAAQ,KAAM,KAAKA,QAAQ,MAAO,KAE7D,CCxB6BC,MAAAA,UAAAA,EAAAA,4BAyB3BC,UACEC,MAAMD,SACP,CAEDE,cACED,MAAMC,aACP,CAEDC,iBAAiBC,WACf,MACMC,GADQD,MAAAA,GAAH,OAAGA,EAAAA,EAAOE,cAAPF,EAAAG,EAAgBC,WAAW,IACjBH,UACxBI,KAAKC,SAAS,wBAAyB,CAAEC,OAAQ,CAC/CC,MAAOH,KAAKI,QAAQR,GAAWI,KAAKI,QAAQC,QAAQ,IACpDC,MAAON,KAAKI,QAAQR,GAAWI,KAAKI,QAAQC,QAAQ,IACpDE,OAAQZ,MAAAA,UAAAA,EAAAA,EAAOE,WAAPW,EAAgBC,WAE3B,CAEDC,eACEV,KAAKI,QAAUO,EAAAA,mBAAmBX,KAAKY,cACxC,CAEGC,kBACF,OAAIb,KAAKc,qBACMD,MAAAA,cAEVb,KAAKe,kBAKVf,KAAKU,eAEE,CACLM,OAAQhB,KAAKI,QAAQa,IAAIC,GAAKA,EAAElB,KAAKI,QAAQC,QAAQ,KACrDc,SAAU,CAAC,CACTC,KAAMpB,KAAKqB,UACXlB,MAAO,QACPmB,KAAMtB,KAAKI,QAAQa,IAAIC,GAAKA,EAAElB,KAAKI,QAAQC,QAAQ,UAXrDkB,QAAQC,KAAM,2FACP,GAaV,CAEGC,qBACF,IAAIC,EAAU,IACT1B,KAAK2B,gBAUV,OAPI3B,KAAK4B,0BACPF,EAAU,IACLA,KACAG,sBAAoB7B,KAAK8B,wBAIpBC,KAAAA,gBAAgBL,EAC7B,CAEGM,uBACF,OAA2B,IAAvBhC,KAAKiC,eACF,CACLC,EAAG,CACDd,KAAM,SACNe,OAAQ,SACRC,SAAUpC,KAAKqC,mBACfC,KAAMC,IACNC,MAAQC,GACW,SAAbA,EAAIrB,MAAmBqB,EAAIC,SACtB,GAETD,EAAIC,UAAW,EACLD,EAACE,MAAQ3C,KAAKqC,qBAG5BO,EAAG,CACDxB,KAAM,SACNe,OAAQ,SACRC,SAAUpC,KAAKqC,mBACfC,KAAMO,EACNL,MAAQC,GACW,SAAbA,EAAIrB,MAAmBqB,EAAIK,SAE9B,GACDL,EAAIK,UAAW,EACLL,EAACE,MAAQ3C,KAAKqC,qBAI/B,CAGGV,qBACF,MAAeoB,EAAG/C,KAAKgD,iBAAiB,gBACxC,MAAO,CACLC,qBAAqB,EACrBC,UAAWlD,KAAKgC,iBAChBmB,YAAa,CACXC,KAAM,QACNC,WAAW,GAEbC,YAAa,IACbC,SAAUvD,KAAKwD,aAAaC,KAAKzD,MACjC0D,QAAS,CACPC,OAAQ,CACNC,SAAS,GAEX/D,QAAS,CACPgE,SAAS,EACTC,SAAU,UACVC,SAAU/D,KAAKN,iBAAiB+D,KAAKzD,QAGzCgE,MAAOjB,EACPkB,MAAM,EACNC,YAAa,GACbC,YAAanE,KAAKgD,iBAAiB,gBACnCoB,eAAgB,OAChBC,WAAY,GACZC,iBAAkB,EAClBC,gBAAiB,QACjBC,iBAAkBxE,KAAKgD,iBAAiB,wBACxCyB,qBAAsBzE,KAAKgD,iBAAiB,iBAC5C0B,0BAA2B1E,KAAKgD,iBAAiB,iBACjD2B,sBAAuB3E,KAAKgD,iBAAiB,8BAC7C4B,YAAaC,OAAO7E,KAAKgD,iBAAiB,mBAC1C8B,iBAAkBD,OAAO7E,KAAKgD,iBAAiB,yBAC/C+B,iBAAkBF,OAAO7E,KAAKgD,iBAAiB,yBAC/CgC,sBAAuBH,OAAO7E,KAAKgD,iBAAiB,+BACpDiC,eAAgB,GAChBC,gBAAiBlF,KAAKgD,iBAAiB,oBACvCmC,qBAAsBnF,KAAKgD,iBAAiB,0BAC5CoC,UAAU,EACVC,OAAQ,CACNnD,EAAG,CACDoD,KAAM,CACJtB,MAAOhE,KAAKgD,iBAAiB,gBAC7BmB,YAAapB,EACbwC,UAAWxC,GAEbyC,MAAO,CACLxB,MAAOjB,EACPwC,UAAWxC,IAGfH,EAAG,CACD0C,KAAM,CACJtB,MAAOhE,KAAKgD,iBAAiB,gBAC7BmB,YAAapB,EACbwC,UAAWxC,GAEbyC,MAAO,CACLxB,MAAOjB,EACPwC,UAAWxC,GAEb0C,aAAc,EACdC,aAAc,KAIrB,CAEqBrD,yBACpB,IAAAsD,EAAAC,EAAAC,EAAA,OAAY7C,KAAAA,iBAAiB,yBAAtB,OAAA2C,EAAgD3F,KAAKa,cAAL,OAAhD+E,EAAgDD,EAAkBxE,SAAS,KAA3B,OAAA0E,EAAAD,EAA+BtE,WAA/E,EAAgDuE,EAAqCC,OAC7F,EAGH,WAAoBrD,GAClB,OAAqB,MAAVE,MAAcF,EAAIsD,MAAMV,OAAOzC,EAAEoD,iBAAiB,KAAOvD,EAAIsD,MAAME,eAAexD,EAAIyD,cAAc5E,KAAKmB,EAAIE,MAAQ,GAAGwD,SAAS,CAAC,MAAM,GAAMvD,CAC1J,GAhMQwD,QAAU,CAAE,iBAAkB,cAAe,gBAAiB,aAC9DC,OAAS,CACdjF,KAAM,CACJA,KAAMkF,OACNC,QAAS,WAINC,qBAAuB,CAC5B,uBAAwB,IACxB,eAAgB,OAChB,eAAgB,OAChB,eAAgB,OAChB,gBAAiB,OACjB,uBAAwB,OACxB,6BAA8B,OAC9B,mBAAoB,OACpB,yBAA0B,OAC1B,iBAAkB,EAClB,uBAAwB,GACxB,uBAAwB,EACxB,6BAA8B,mBCtBMC,EAAAA,WAItCC,oBAAoB/G,GAAO,IAAAgH,EAAAC,EAAAC,EACzB,SAAKlH,GAAD,SAACA,EAAOO,UAAPyG,EAAepG,KAGlB,OAFAP,KAAK8G,iCACL9G,KAAK+G,yBAIP/G,KAAKgH,yBACL,QAAcrH,MAAAA,GAAH,OAAGA,EAAAA,EAAOO,aAAPP,EAAAiH,EAAetG,MAClBH,EAAA,MAAGR,UAAHkH,EAAGlH,EAAOO,aAAV,EAAG2G,EAAe1G,MAE7BH,KAAKiH,4BAA4BC,UADnBlH,KAAKmH,oCAAoCD,UAEpDE,WAAW,UAAW9G,GACtB8G,WAAW,UAAWjH,GACzBH,KAAKqH,2BACN,CAEDL,yBACEhH,KAAKsH,yBAAyBC,UAAUC,OAAOxH,KAAKyH,8BACrD,CAEDV,yBACE/G,KAAKsH,yBAAyBC,UAAUG,UAAU1H,KAAKyH,8BACxD,CAEDX,4BACE9G,KAAKiH,4BAA4BM,UAAUC,OAAOxH,KAAK2H,iCACxD,CAEDN,4BACErH,KAAKiH,4BAA4BM,UAAUG,UAAU1H,KAAK2H,iCAC3D,IAlCMvB,QAAU,CAAE,qBAAsB,wBAAyB,mCAC3DwB,QAAU,CAAE,yBAA0B,6BCFlBnB,MAAAA,UAAAA,EAAWA,WAStChH,YAAYE,GACVK,KAAK6H,sBAAsBX,UAAYvH,EAAMO,OAAO4H,YAAYZ,UAChEvH,EAAMO,OAAO4H,YAAYJ,SACzB1H,KAAK+H,YAAYC,cAAc,IAAIC,YAAYjI,KAAKkI,gBACrD,IAZM9B,QAAU,CAAE,kBAAmB,SAC/BC,EAAAA,OAAS,CACd8B,UAAW,CACT/G,KAAMkF,OACNC,QAAS,iBCLA,MAAA6B,UAAyB3B,EAAAA,WAStClH,UACES,KAAKqI,QAAQL,cACX,IAAAC,YAAgBjI,KAAKkI,eAAgB,CACnChI,OAAQ,CAAE4H,YAAa9H,KAAKsI,YAC5BC,SAAS,EACTC,YAAY,IAGjB,IAhBMpC,QAAU,CAAE,UACZC,OAAS,CACd8B,UAAW,CACT/G,KAAMkF,OACNC,QAAS,4BCAFkC,QAAwB,CACnC,CAACC,EAAsB,4BACvB,CAACC,EAAuB,yCACxB,CAACC,EAAsB,wCACvB,CAACC,EAAmB,sCACpB5H,IAAI,SAASC,GACb,MACgB4H,EAAG5H,EAAE,GACrB,MAAO,CACL6H,WAAY9J,EAHFiC,EAAE,IAIZ8H,sBAAuBF,EAE1B"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
import{SuperchartChartjsController as t,parseContentsAsJSON as
|
1
|
+
import{SuperchartChartjsController as t,parseContentsAsCsv as e,parseContentsAsJSON as r}from"@supercharts/stimulus-base";import{Controller as a}from"@hotwired/stimulus";function s(t){const e=(t.match(/^(?:\.\/)?(.+)(?:[_-]controller\..+?)$/)||[])[1];if(e)return e.replace(/_/g,"-").replace(/\//g,"--")}function i(){return i=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(t[a]=r[a])}return t},i.apply(this,arguments)}class o extends t{connect(){super.connect()}updateChart(){super.updateChart()}describeDataForX(t){var e,r;const a=(null==t||null==(e=t.tooltip)?void 0:e.dataPoints[0]).dataIndex;this.dispatch("description-requested",{detail:{label:this.csvData[a][this.csvData.columns[1]],value:this.csvData[a][this.csvData.columns[3]],show:!(null==t||null==(r=t.tooltip)||!r.opacity)}})}parseCsvData(){this.csvData=e(this.csvDataTarget)}get chartjsData(){return this.hasChartJsDataTarget?super.chartjsData():this.hasCsvDataTarget?(this.parseCsvData(),{labels:this.csvData.map(t=>t[this.csvData.columns[0]]),datasets:[{type:this.typeValue,label:"Value",data:this.csvData.map(t=>t[this.csvData.columns[2]])}]}):(console.warn("The chart needs data in a in a csv target or in a chartjsData target (in chart.js JSON)"),[])}get chartjsOptions(){let t=i({},this.defaultOptions);return this.hasChartjsOptionsTarget&&(t=i({},t,r(this.chartjsOptionsTarget))),this.parseForCssVars(t)}get animationOptions(){return!1!==this.runAnimations&&{x:{type:"number",easing:"linear",duration:this.delayBetweenPoints,from:NaN,delay:t=>"data"!==t.type||t.xStarted?0:(t.xStarted=!0,t.index*this.delayBetweenPoints)},y:{type:"number",easing:"linear",duration:this.delayBetweenPoints,from:l,delay:t=>"data"!==t.type||t.yStarted?0:(t.yStarted=!0,t.index*this.delayBetweenPoints)}}}get defaultOptions(){const t=this.cssPropertyValue("--axis-color");return{maintainAspectRatio:!1,animation:this.animationOptions,interaction:{mode:"index",intersect:!1},resizeDelay:200,onResize:this.handleResize.bind(this),plugins:{legend:{display:!1},tooltip:{enabled:!1,position:"nearest",external:this.describeDataForX.bind(this)}},color:t,fill:!1,lineTension:.3,borderColor:this.cssPropertyValue("--line-color"),borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",pointBorderColor:this.cssPropertyValue("--point-stroke-color"),pointBackgroundColor:this.cssPropertyValue("--point-color"),pointHoverBackgroundColor:this.cssPropertyValue("--point-color"),pointHoverBorderColor:this.cssPropertyValue("--point-stroke-color-hover"),pointRadius:Number(this.cssPropertyValue("--point-radius")),pointHoverRadius:Number(this.cssPropertyValue("--point-hover-radius")),pointBorderWidth:Number(this.cssPropertyValue("--point-border-width")),pointHoverBorderWidth:Number(this.cssPropertyValue("--point-hover-border-width")),pointHitRadius:10,backgroundColor:this.cssPropertyValue("--bar-fill-color"),hoverBackgroundColor:this.cssPropertyValue("--bar-hover-fill-color"),spanGaps:!1,scales:{x:{grid:{color:this.cssPropertyValue("--grid-color"),borderColor:t,tickColor:t},ticks:{color:t,tickColor:t}},y:{grid:{color:this.cssPropertyValue("--grid-color"),borderColor:t,tickColor:t},ticks:{color:t,tickColor:t},suggestedMin:0,suggestedMax:10}}}}get delayBetweenPoints(){var t,e,r;return this.cssPropertyValue("--animation-duration")/(null==(t=this.chartjsData)||null==(e=t.datasets[0])||null==(r=e.data)?void 0:r.length)}}function l(t){return 0===t.index?t.chart.scales.y.getPixelForValue(100):t.chart.getDatasetMeta(t.datasetIndex).data[t.index-1].getProps(["y"],!0).y}o.targets=["chartjsOptions","chartjsData","chartjsCanvas","csvData"],o.values={type:{type:String,default:"line"}},o.defaultCssProperties={"--animation-duration":200,"--axis-color":"#999","--grid-color":"#eee","--line-color":"#aaa","--point-color":"#333","--point-stroke-color":"#fff","--point-stroke-color-hover":"#eee","--bar-fill-color":"#999","--bar-hover-fill-color":"#333","--point-radius":6,"--point-hover-radius":10,"--point-border-width":4,"--point-hover-border-width":3};class n extends a{showDescriptionWith(t){var e,r,a;if(null==t||null==(e=t.detail)||!e.show)return this.hideContextualDescription(),void this.showOverallDescription();this.hideOverallDescription();const s=null==t||null==(r=t.detail)?void 0:r.value,i=null==t||null==(a=t.detail)?void 0:a.label;this.contextualDescriptionTarget.innerHTML=this.contextualDescriptionTemplateTarget.innerHTML.replaceAll("%value%",s).replaceAll("%label%",i),this.showContextualDescription()}hideOverallDescription(){this.overallDescriptionTarget.classList.add(...this.hideOverallDescriptionClasses)}showOverallDescription(){this.overallDescriptionTarget.classList.remove(...this.hideOverallDescriptionClasses)}hideContextualDescription(){this.contextualDescriptionTarget.classList.add(...this.hideContextualDescriptionClasses)}showContextualDescription(){this.contextualDescriptionTarget.classList.remove(...this.hideContextualDescriptionClasses)}}n.targets=["overallDescription","contextualDescription","contextualDescriptionTemplate"],n.classes=["hideOverallDescription","hideContextualDescription"];class c extends a{updateChart(t){this.chartSourceDataTarget.innerHTML=t.detail.dataElement.innerHTML,t.detail.dataElement.remove(),this.chartTarget.dispatchEvent(new CustomEvent(this.eventNameValue))}}c.targets=["chartSourceData","chart"],c.values={eventName:{type:String,default:"update-chart"}};class h extends a{connect(){this.element.dispatchEvent(new CustomEvent(this.eventNameValue,{detail:{dataElement:this.dataTarget},bubbles:!0,cancelable:!0}))}}h.targets=["data"],h.values={eventName:{type:String,default:"superchart:update-chart"}};const d=[[o,"superchart_controller.js"],[n,"supercharts/describable_controller.js"],[c,"supercharts/filterable_controller.js"],[h,"supercharts/filters_controller.js"]].map(function(t){const e=t[0];return{identifier:s(t[1]),controllerConstructor:e}});export{n as DescribableController,c as FilterableController,h as FiltersController,o as SuperchartController,d as controllerDefinitions};
|
2
2
|
//# sourceMappingURL=supercharts-bullet-train.modern.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"supercharts-bullet-train.modern.mjs","sources":["../../../node_modules/@hotwired/stimulus-webpack-helpers/dist/stimulus-webpack-helpers.js","../../javascript/controllers/superchart_controller.js","../../javascript/controllers/supercharts/describable_controller.js","../../javascript/controllers/supercharts/filterable_controller.js","../../javascript/controllers/supercharts/filters_controller.js","../../javascript/controllers/index.js"],"sourcesContent":["/*\nStimulus Webpack Helpers 1.0.0\nCopyright © 2021 Basecamp, LLC\n */\nfunction definitionsFromContext(context) {\n return context.keys()\n .map((key) => definitionForModuleWithContextAndKey(context, key))\n .filter((value) => value);\n}\nfunction definitionForModuleWithContextAndKey(context, key) {\n const identifier = identifierForContextKey(key);\n if (identifier) {\n return definitionForModuleAndIdentifier(context(key), identifier);\n }\n}\nfunction definitionForModuleAndIdentifier(module, identifier) {\n const controllerConstructor = module.default;\n if (typeof controllerConstructor == \"function\") {\n return { identifier, controllerConstructor };\n }\n}\nfunction identifierForContextKey(key) {\n const logicalName = (key.match(/^(?:\\.\\/)?(.+)(?:[_-]controller\\..+?)$/) || [])[1];\n if (logicalName) {\n return logicalName.replace(/_/g, \"-\").replace(/\\//g, \"--\");\n }\n}\n\nexport { definitionForModuleAndIdentifier, definitionForModuleWithContextAndKey, definitionsFromContext, identifierForContextKey };\n","import { SuperchartChartjsController, parseContentsAsJSON } from '@supercharts/stimulus-base'\nimport * as d3 from \"d3\"\n\nexport default class extends SuperchartChartjsController {\n static targets = [ \"chartjsOptions\", \"chartjsData\", \"chartjsCanvas\", \"csvData\" ]\n static values = {\n type: { \n type: String,\n default: \"line\"\n }\n }\n \n static defaultCssProperties = {\n '--animation-duration': 200, // milliseconds\n '--axis-color': '#999',\n '--grid-color': '#eee',\n '--line-color': '#aaa',\n '--point-color': '#333',\n '--point-stroke-color': '#fff',\n '--point-stroke-color-hover': '#eee',\n '--bar-fill-color': '#999',\n '--bar-hover-fill-color': '#333',\n '--point-radius': 6,\n '--point-hover-radius': 10,\n '--point-border-width': 4,\n '--point-hover-border-width': 3,\n }\n \n connect() {\n super.connect()\n }\n \n updateChart() {\n super.updateChart()\n }\n \n describeDataForX(event) {\n const point = event?.tooltip?.dataPoints[0]\n const dataIndex = point.dataIndex\n this.dispatch(\"description-requested\", { detail: {\n label: this.csvData[dataIndex][this.csvData.columns[1]],\n value: this.csvData[dataIndex][this.csvData.columns[3]],\n show: !!event?.tooltip?.opacity\n } })\n }\n \n parseCsvData() {\n this.csvData = d3.csvParse(this.csvDataTarget.innerHTML.trim())\n console.log(this.csvData)\n }\n \n get chartjsData() {\n if (this.hasChartJsDataTarget) {\n return super.chartjsData()\n }\n if (!this.hasCsvDataTarget) {\n console.warn(`The chart needs data in a in a csv target or in a chartjsData target (in chart.js JSON)`)\n return []\n }\n \n this.parseCsvData()\n \n return {\n labels: this.csvData.map(d => d[this.csvData.columns[0]]),\n datasets: [{\n type: this.typeValue,\n label: \"Value\",\n data: this.csvData.map(d => d[this.csvData.columns[2]])\n }]\n }\n }\n \n get chartjsOptions() {\n let options = {\n ...this.defaultOptions\n }\n \n if (this.hasChartjsOptionsTarget) {\n options = {\n ...options,\n ...parseContentsAsJSON(this.chartjsOptionsTarget)\n }\n }\n \n return this.parseForCssVars(options)\n }\n \n get animationOptions() {\n if (this.runAnimations === false) { return false }\n return {\n x: {\n type: 'number',\n easing: 'linear',\n duration: this.delayBetweenPoints,\n from: NaN, // the point is initially skipped\n delay: (ctx) => {\n if (ctx.type !== 'data' || ctx.xStarted) {\n return 0;\n }\n ctx.xStarted = true;\n return ctx.index * this.delayBetweenPoints;\n }\n },\n y: {\n type: 'number',\n easing: 'linear',\n duration: this.delayBetweenPoints,\n from: previousY,\n delay: (ctx) => {\n if (ctx.type !== 'data' || ctx.yStarted) {\n return 0;\n }\n ctx.yStarted = true;\n return ctx.index * this.delayBetweenPoints;\n }\n }\n }\n }\n\n // You can set default options in this getter for all your charts.\n get defaultOptions() {\n const axisColor = this.cssPropertyValue('--axis-color')\n return {\n maintainAspectRatio: false,\n animation: this.animationOptions,\n interaction: {\n mode: 'index',\n intersect: false,\n },\n resizeDelay: 200, // milliseconds\n onResize: this.handleResize.bind(this),\n plugins: {\n legend: {\n display: false,\n },\n tooltip: {\n enabled: false,\n position: 'nearest',\n external: this.describeDataForX.bind(this)\n }\n },\n color: axisColor,\n fill: false,\n lineTension: 0.3,\n borderColor: this.cssPropertyValue('--line-color'),\n borderCapStyle: \"butt\",\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: \"miter\",\n pointBorderColor: this.cssPropertyValue('--point-stroke-color'),\n pointBackgroundColor: this.cssPropertyValue('--point-color'),\n pointHoverBackgroundColor: this.cssPropertyValue('--point-color'),\n pointHoverBorderColor: this.cssPropertyValue('--point-stroke-color-hover'),\n pointRadius: Number(this.cssPropertyValue('--point-radius')),\n pointHoverRadius: Number(this.cssPropertyValue('--point-hover-radius')),\n pointBorderWidth: Number(this.cssPropertyValue('--point-border-width')),\n pointHoverBorderWidth: Number(this.cssPropertyValue('--point-hover-border-width')),\n pointHitRadius: 10,\n backgroundColor: this.cssPropertyValue('--bar-fill-color'),\n hoverBackgroundColor: this.cssPropertyValue('--bar-hover-fill-color'),\n spanGaps: false,\n scales: {\n x: {\n grid: {\n color: this.cssPropertyValue('--grid-color'),\n borderColor: axisColor,\n tickColor: axisColor,\n },\n ticks: {\n color: axisColor,\n tickColor: axisColor\n }\n },\n y: {\n grid: {\n color: this.cssPropertyValue('--grid-color'),\n borderColor: axisColor,\n tickColor: axisColor,\n },\n ticks: {\n color: axisColor,\n tickColor: axisColor\n },\n suggestedMin: 0,\n suggestedMax: 10\n }\n }\n }\n }\n \n get delayBetweenPoints() {\n return this.cssPropertyValue('--animation-duration') / this.chartjsData?.datasets[0]?.data?.length\n }\n}\n\nfunction previousY (ctx) {\n return ctx.index === 0 ? ctx.chart.scales.y.getPixelForValue(100) : ctx.chart.getDatasetMeta(ctx.datasetIndex).data[ctx.index - 1].getProps(['y'], true).y;\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ \"overallDescription\", \"contextualDescription\", \"contextualDescriptionTemplate\" ]\n static classes = [ \"hideOverallDescription\", \"hideContextualDescription\" ]\n \n showDescriptionWith(event) {\n if (!event?.detail?.show) {\n this.hideContextualDescription()\n this.showOverallDescription()\n return\n }\n \n this.hideOverallDescription()\n const value = event?.detail?.value\n const label = event?.detail?.label\n let newHTML = this.contextualDescriptionTemplateTarget.innerHTML\n this.contextualDescriptionTarget.innerHTML = newHTML\n .replaceAll(\"%value%\", value)\n .replaceAll(\"%label%\", label)\n this.showContextualDescription()\n }\n \n hideOverallDescription() {\n this.overallDescriptionTarget.classList.add(...this.hideOverallDescriptionClasses)\n }\n \n showOverallDescription() {\n this.overallDescriptionTarget.classList.remove(...this.hideOverallDescriptionClasses)\n }\n \n hideContextualDescription() {\n this.contextualDescriptionTarget.classList.add(...this.hideContextualDescriptionClasses)\n }\n \n showContextualDescription() {\n this.contextualDescriptionTarget.classList.remove(...this.hideContextualDescriptionClasses)\n }\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ \"chartSourceData\", \"chart\" ]\n static values = {\n eventName: {\n type: String,\n default: \"update-chart\"\n }\n }\n \n updateChart(event) {\n this.chartSourceDataTarget.innerHTML = event.detail.dataElement.innerHTML\n event.detail.dataElement.remove()\n this.chartTarget.dispatchEvent(new CustomEvent(this.eventNameValue))\n }\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ \"data\" ]\n static values = {\n eventName: {\n type: String,\n default: \"superchart:update-chart\"\n }\n }\n \n connect() {\n this.element.dispatchEvent(\n new CustomEvent(this.eventNameValue, {\n detail: { dataElement: this.dataTarget },\n bubbles: true,\n cancelable: true\n })\n )\n }\n}","import { identifierForContextKey } from \"@hotwired/stimulus-webpack-helpers\"\n\nimport SuperchartController from \"./superchart_controller\"\nimport DescribableController from \"./supercharts/describable_controller\"\nimport FilterableController from \"./supercharts/filterable_controller\"\nimport FiltersController from \"./supercharts/filters_controller\"\n\nexport const controllerDefinitions = [\n [SuperchartController, \"superchart_controller.js\"],\n [DescribableController, \"supercharts/describable_controller.js\"],\n [FilterableController, \"supercharts/filterable_controller.js\"],\n [FiltersController, \"supercharts/filters_controller.js\"],\n].map(function(d) {\n const key = d[1]\n const controller = d[0]\n return {\n identifier: identifierForContextKey(key),\n controllerConstructor: controller\n }\n})\n\nexport {\n SuperchartController,\n DescribableController,\n FilterableController,\n FiltersController,\n}\n"],"names":["identifierForContextKey","key","logicalName","match","replace","_class","connect","super","updateChart","describeDataForX","event","_event$tooltip","_event$tooltip2","tooltip","dataPoints","dataIndex","this","dispatch","detail","label","csvData","columns","value","show","opacity","parseCsvData","d3","csvParse","csvDataTarget","innerHTML","trim","console","log","chartjsData","hasChartJsDataTarget","hasCsvDataTarget","labels","map","d","datasets","type","typeValue","data","warn","chartjsOptions","options","_extends","defaultOptions","hasChartjsOptionsTarget","parseContentsAsJSON","chartjsOptionsTarget","parseForCssVars","animationOptions","runAnimations","x","easing","duration","delayBetweenPoints","from","NaN","delay","ctx","xStarted","index","y","previousY","yStarted","cssPropertyValue","maintainAspectRatio","animation","interaction","mode","intersect","resizeDelay","onResize","handleResize","bind","plugins","legend","display","enabled","position","external","color","axisColor","fill","lineTension","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","pointBorderColor","pointBackgroundColor","pointHoverBackgroundColor","pointHoverBorderColor","pointRadius","Number","pointHoverRadius","pointBorderWidth","pointHoverBorderWidth","pointHitRadius","backgroundColor","hoverBackgroundColor","spanGaps","scales","grid","tickColor","ticks","suggestedMin","suggestedMax","_this$chartjsData","_this$chartjsData$dat","_this$chartjsData$dat2","length","chart","getPixelForValue","getDatasetMeta","datasetIndex","getProps","targets","values","String","default","defaultCssProperties","Controller","showDescriptionWith","_event$detail","_event$detail2","_event$detail3","hideContextualDescription","showOverallDescription","hideOverallDescription","contextualDescriptionTarget","contextualDescriptionTemplateTarget","replaceAll","showContextualDescription","overallDescriptionTarget","classList","add","hideOverallDescriptionClasses","remove","hideContextualDescriptionClasses","classes","chartSourceDataTarget","dataElement","chartTarget","dispatchEvent","CustomEvent","eventNameValue","eventName","element","dataTarget","bubbles","cancelable","controllerDefinitions","SuperchartController","DescribableController","FilterableController","FiltersController","controller","identifier","controllerConstructor"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"supercharts-bullet-train.modern.mjs","sources":["../../../node_modules/@hotwired/stimulus-webpack-helpers/dist/stimulus-webpack-helpers.js","../../javascript/controllers/superchart_controller.js","../../javascript/controllers/supercharts/describable_controller.js","../../javascript/controllers/supercharts/filterable_controller.js","../../javascript/controllers/supercharts/filters_controller.js","../../javascript/controllers/index.js"],"sourcesContent":["/*\nStimulus Webpack Helpers 1.0.0\nCopyright © 2021 Basecamp, LLC\n */\nfunction definitionsFromContext(context) {\n return context.keys()\n .map((key) => definitionForModuleWithContextAndKey(context, key))\n .filter((value) => value);\n}\nfunction definitionForModuleWithContextAndKey(context, key) {\n const identifier = identifierForContextKey(key);\n if (identifier) {\n return definitionForModuleAndIdentifier(context(key), identifier);\n }\n}\nfunction definitionForModuleAndIdentifier(module, identifier) {\n const controllerConstructor = module.default;\n if (typeof controllerConstructor == \"function\") {\n return { identifier, controllerConstructor };\n }\n}\nfunction identifierForContextKey(key) {\n const logicalName = (key.match(/^(?:\\.\\/)?(.+)(?:[_-]controller\\..+?)$/) || [])[1];\n if (logicalName) {\n return logicalName.replace(/_/g, \"-\").replace(/\\//g, \"--\");\n }\n}\n\nexport { definitionForModuleAndIdentifier, definitionForModuleWithContextAndKey, definitionsFromContext, identifierForContextKey };\n","import { SuperchartChartjsController, parseContentsAsJSON, parseContentsAsCsv } from '@supercharts/stimulus-base'\n\nexport default class extends SuperchartChartjsController {\n static targets = [ \"chartjsOptions\", \"chartjsData\", \"chartjsCanvas\", \"csvData\" ]\n static values = {\n type: { \n type: String,\n default: \"line\"\n }\n }\n \n static defaultCssProperties = {\n '--animation-duration': 200, // milliseconds\n '--axis-color': '#999',\n '--grid-color': '#eee',\n '--line-color': '#aaa',\n '--point-color': '#333',\n '--point-stroke-color': '#fff',\n '--point-stroke-color-hover': '#eee',\n '--bar-fill-color': '#999',\n '--bar-hover-fill-color': '#333',\n '--point-radius': 6,\n '--point-hover-radius': 10,\n '--point-border-width': 4,\n '--point-hover-border-width': 3,\n }\n \n connect() {\n super.connect()\n }\n \n updateChart() {\n super.updateChart()\n }\n \n describeDataForX(event) {\n const point = event?.tooltip?.dataPoints[0]\n const dataIndex = point.dataIndex\n this.dispatch(\"description-requested\", { detail: {\n label: this.csvData[dataIndex][this.csvData.columns[1]],\n value: this.csvData[dataIndex][this.csvData.columns[3]],\n show: !!event?.tooltip?.opacity\n } })\n }\n \n parseCsvData() {\n this.csvData = parseContentsAsCsv(this.csvDataTarget)\n }\n \n get chartjsData() {\n if (this.hasChartJsDataTarget) {\n return super.chartjsData()\n }\n if (!this.hasCsvDataTarget) {\n console.warn(`The chart needs data in a in a csv target or in a chartjsData target (in chart.js JSON)`)\n return []\n }\n \n this.parseCsvData()\n \n return {\n labels: this.csvData.map(d => d[this.csvData.columns[0]]),\n datasets: [{\n type: this.typeValue,\n label: \"Value\",\n data: this.csvData.map(d => d[this.csvData.columns[2]])\n }]\n }\n }\n \n get chartjsOptions() {\n let options = {\n ...this.defaultOptions\n }\n \n if (this.hasChartjsOptionsTarget) {\n options = {\n ...options,\n ...parseContentsAsJSON(this.chartjsOptionsTarget)\n }\n }\n \n return this.parseForCssVars(options)\n }\n \n get animationOptions() {\n if (this.runAnimations === false) { return false }\n return {\n x: {\n type: 'number',\n easing: 'linear',\n duration: this.delayBetweenPoints,\n from: NaN, // the point is initially skipped\n delay: (ctx) => {\n if (ctx.type !== 'data' || ctx.xStarted) {\n return 0;\n }\n ctx.xStarted = true;\n return ctx.index * this.delayBetweenPoints;\n }\n },\n y: {\n type: 'number',\n easing: 'linear',\n duration: this.delayBetweenPoints,\n from: previousY,\n delay: (ctx) => {\n if (ctx.type !== 'data' || ctx.yStarted) {\n return 0;\n }\n ctx.yStarted = true;\n return ctx.index * this.delayBetweenPoints;\n }\n }\n }\n }\n\n // You can set default options in this getter for all your charts.\n get defaultOptions() {\n const axisColor = this.cssPropertyValue('--axis-color')\n return {\n maintainAspectRatio: false,\n animation: this.animationOptions,\n interaction: {\n mode: 'index',\n intersect: false,\n },\n resizeDelay: 200, // milliseconds\n onResize: this.handleResize.bind(this),\n plugins: {\n legend: {\n display: false,\n },\n tooltip: {\n enabled: false,\n position: 'nearest',\n external: this.describeDataForX.bind(this)\n }\n },\n color: axisColor,\n fill: false,\n lineTension: 0.3,\n borderColor: this.cssPropertyValue('--line-color'),\n borderCapStyle: \"butt\",\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: \"miter\",\n pointBorderColor: this.cssPropertyValue('--point-stroke-color'),\n pointBackgroundColor: this.cssPropertyValue('--point-color'),\n pointHoverBackgroundColor: this.cssPropertyValue('--point-color'),\n pointHoverBorderColor: this.cssPropertyValue('--point-stroke-color-hover'),\n pointRadius: Number(this.cssPropertyValue('--point-radius')),\n pointHoverRadius: Number(this.cssPropertyValue('--point-hover-radius')),\n pointBorderWidth: Number(this.cssPropertyValue('--point-border-width')),\n pointHoverBorderWidth: Number(this.cssPropertyValue('--point-hover-border-width')),\n pointHitRadius: 10,\n backgroundColor: this.cssPropertyValue('--bar-fill-color'),\n hoverBackgroundColor: this.cssPropertyValue('--bar-hover-fill-color'),\n spanGaps: false,\n scales: {\n x: {\n grid: {\n color: this.cssPropertyValue('--grid-color'),\n borderColor: axisColor,\n tickColor: axisColor,\n },\n ticks: {\n color: axisColor,\n tickColor: axisColor\n }\n },\n y: {\n grid: {\n color: this.cssPropertyValue('--grid-color'),\n borderColor: axisColor,\n tickColor: axisColor,\n },\n ticks: {\n color: axisColor,\n tickColor: axisColor\n },\n suggestedMin: 0,\n suggestedMax: 10\n }\n }\n }\n }\n \n get delayBetweenPoints() {\n return this.cssPropertyValue('--animation-duration') / this.chartjsData?.datasets[0]?.data?.length\n }\n}\n\nfunction previousY (ctx) {\n return ctx.index === 0 ? ctx.chart.scales.y.getPixelForValue(100) : ctx.chart.getDatasetMeta(ctx.datasetIndex).data[ctx.index - 1].getProps(['y'], true).y;\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ \"overallDescription\", \"contextualDescription\", \"contextualDescriptionTemplate\" ]\n static classes = [ \"hideOverallDescription\", \"hideContextualDescription\" ]\n \n showDescriptionWith(event) {\n if (!event?.detail?.show) {\n this.hideContextualDescription()\n this.showOverallDescription()\n return\n }\n \n this.hideOverallDescription()\n const value = event?.detail?.value\n const label = event?.detail?.label\n let newHTML = this.contextualDescriptionTemplateTarget.innerHTML\n this.contextualDescriptionTarget.innerHTML = newHTML\n .replaceAll(\"%value%\", value)\n .replaceAll(\"%label%\", label)\n this.showContextualDescription()\n }\n \n hideOverallDescription() {\n this.overallDescriptionTarget.classList.add(...this.hideOverallDescriptionClasses)\n }\n \n showOverallDescription() {\n this.overallDescriptionTarget.classList.remove(...this.hideOverallDescriptionClasses)\n }\n \n hideContextualDescription() {\n this.contextualDescriptionTarget.classList.add(...this.hideContextualDescriptionClasses)\n }\n \n showContextualDescription() {\n this.contextualDescriptionTarget.classList.remove(...this.hideContextualDescriptionClasses)\n }\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ \"chartSourceData\", \"chart\" ]\n static values = {\n eventName: {\n type: String,\n default: \"update-chart\"\n }\n }\n \n updateChart(event) {\n this.chartSourceDataTarget.innerHTML = event.detail.dataElement.innerHTML\n event.detail.dataElement.remove()\n this.chartTarget.dispatchEvent(new CustomEvent(this.eventNameValue))\n }\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ \"data\" ]\n static values = {\n eventName: {\n type: String,\n default: \"superchart:update-chart\"\n }\n }\n \n connect() {\n this.element.dispatchEvent(\n new CustomEvent(this.eventNameValue, {\n detail: { dataElement: this.dataTarget },\n bubbles: true,\n cancelable: true\n })\n )\n }\n}","import { identifierForContextKey } from \"@hotwired/stimulus-webpack-helpers\"\n\nimport SuperchartController from \"./superchart_controller\"\nimport DescribableController from \"./supercharts/describable_controller\"\nimport FilterableController from \"./supercharts/filterable_controller\"\nimport FiltersController from \"./supercharts/filters_controller\"\n\nexport const controllerDefinitions = [\n [SuperchartController, \"superchart_controller.js\"],\n [DescribableController, \"supercharts/describable_controller.js\"],\n [FilterableController, \"supercharts/filterable_controller.js\"],\n [FiltersController, \"supercharts/filters_controller.js\"],\n].map(function(d) {\n const key = d[1]\n const controller = d[0]\n return {\n identifier: identifierForContextKey(key),\n controllerConstructor: controller\n }\n})\n\nexport {\n SuperchartController,\n DescribableController,\n FilterableController,\n FiltersController,\n}\n"],"names":["identifierForContextKey","key","logicalName","match","replace","SuperchartChartjsController","connect","super","updateChart","describeDataForX","event","dataIndex","tooltip","_event$tooltip","dataPoints","this","dispatch","detail","label","csvData","columns","value","show","_event$tooltip2","opacity","parseCsvData","parseContentsAsCsv","csvDataTarget","chartjsData","hasChartJsDataTarget","hasCsvDataTarget","labels","map","d","datasets","type","typeValue","data","console","warn","chartjsOptions","_extends","defaultOptions","hasChartjsOptionsTarget","options","parseContentsAsJSON","chartjsOptionsTarget","parseForCssVars","animationOptions","runAnimations","x","easing","duration","delayBetweenPoints","from","NaN","delay","ctx","xStarted","index","y","previousY","yStarted","cssPropertyValue","maintainAspectRatio","animation","interaction","mode","intersect","resizeDelay","onResize","handleResize","bind","plugins","legend","display","enabled","position","external","color","axisColor","fill","lineTension","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","pointBorderColor","pointBackgroundColor","pointHoverBackgroundColor","pointHoverBorderColor","pointRadius","Number","pointHoverRadius","pointBorderWidth","pointHoverBorderWidth","pointHitRadius","backgroundColor","hoverBackgroundColor","spanGaps","scales","grid","tickColor","ticks","suggestedMin","suggestedMax","_this$chartjsData","_this$chartjsData$dat","_this$chartjsData$dat2","length","chart","getPixelForValue","getDatasetMeta","datasetIndex","getProps","targets","values","String","default","defaultCssProperties","Controller","showDescriptionWith","_event$detail","_event$detail2","_event$detail3","hideContextualDescription","showOverallDescription","hideOverallDescription","contextualDescriptionTarget","innerHTML","contextualDescriptionTemplateTarget","replaceAll","showContextualDescription","overallDescriptionTarget","classList","add","hideOverallDescriptionClasses","remove","hideContextualDescriptionClasses","classes","chartSourceDataTarget","dataElement","chartTarget","dispatchEvent","CustomEvent","eventNameValue","eventName","_class","element","dataTarget","bubbles","cancelable","controllerDefinitions","SuperchartController","DescribableController","FilterableController","FiltersController","controller","identifier","controllerConstructor"],"mappings":"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"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@supercharts/stimulus-base"),require("
|
1
|
+
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@supercharts/stimulus-base"),require("@hotwired/stimulus")):"function"==typeof define&&define.amd?define(["exports","@supercharts/stimulus-base","@hotwired/stimulus"],e):e((t||self).superchartsBulletTrain={},t.stimulusBase,t.stimulus)}(this,function(t,e,r){function s(t){const e=(t.match(/^(?:\.\/)?(.+)(?:[_-]controller\..+?)$/)||[])[1];if(e)return e.replace(/_/g,"-").replace(/\//g,"--")}class a extends e.SuperchartChartjsController{connect(){super.connect()}updateChart(){super.updateChart()}describeDataForX(t){var e,r;const s=(null==t||null==(e=t.tooltip)?void 0:e.dataPoints[0]).dataIndex;this.dispatch("description-requested",{detail:{label:this.csvData[s][this.csvData.columns[1]],value:this.csvData[s][this.csvData.columns[3]],show:!(null==t||null==(r=t.tooltip)||!r.opacity)}})}parseCsvData(){this.csvData=e.parseContentsAsCsv(this.csvDataTarget)}get chartjsData(){return this.hasChartJsDataTarget?super.chartjsData():this.hasCsvDataTarget?(this.parseCsvData(),{labels:this.csvData.map(t=>t[this.csvData.columns[0]]),datasets:[{type:this.typeValue,label:"Value",data:this.csvData.map(t=>t[this.csvData.columns[2]])}]}):(console.warn("The chart needs data in a in a csv target or in a chartjsData target (in chart.js JSON)"),[])}get chartjsOptions(){let t={...this.defaultOptions};return this.hasChartjsOptionsTarget&&(t={...t,...e.parseContentsAsJSON(this.chartjsOptionsTarget)}),this.parseForCssVars(t)}get animationOptions(){return!1!==this.runAnimations&&{x:{type:"number",easing:"linear",duration:this.delayBetweenPoints,from:NaN,delay:t=>"data"!==t.type||t.xStarted?0:(t.xStarted=!0,t.index*this.delayBetweenPoints)},y:{type:"number",easing:"linear",duration:this.delayBetweenPoints,from:o,delay:t=>"data"!==t.type||t.yStarted?0:(t.yStarted=!0,t.index*this.delayBetweenPoints)}}}get defaultOptions(){const t=this.cssPropertyValue("--axis-color");return{maintainAspectRatio:!1,animation:this.animationOptions,interaction:{mode:"index",intersect:!1},resizeDelay:200,onResize:this.handleResize.bind(this),plugins:{legend:{display:!1},tooltip:{enabled:!1,position:"nearest",external:this.describeDataForX.bind(this)}},color:t,fill:!1,lineTension:.3,borderColor:this.cssPropertyValue("--line-color"),borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",pointBorderColor:this.cssPropertyValue("--point-stroke-color"),pointBackgroundColor:this.cssPropertyValue("--point-color"),pointHoverBackgroundColor:this.cssPropertyValue("--point-color"),pointHoverBorderColor:this.cssPropertyValue("--point-stroke-color-hover"),pointRadius:Number(this.cssPropertyValue("--point-radius")),pointHoverRadius:Number(this.cssPropertyValue("--point-hover-radius")),pointBorderWidth:Number(this.cssPropertyValue("--point-border-width")),pointHoverBorderWidth:Number(this.cssPropertyValue("--point-hover-border-width")),pointHitRadius:10,backgroundColor:this.cssPropertyValue("--bar-fill-color"),hoverBackgroundColor:this.cssPropertyValue("--bar-hover-fill-color"),spanGaps:!1,scales:{x:{grid:{color:this.cssPropertyValue("--grid-color"),borderColor:t,tickColor:t},ticks:{color:t,tickColor:t}},y:{grid:{color:this.cssPropertyValue("--grid-color"),borderColor:t,tickColor:t},ticks:{color:t,tickColor:t},suggestedMin:0,suggestedMax:10}}}}get delayBetweenPoints(){var t,e,r;return this.cssPropertyValue("--animation-duration")/(null==(t=this.chartjsData)||null==(e=t.datasets[0])||null==(r=e.data)?void 0:r.length)}}function o(t){return 0===t.index?t.chart.scales.y.getPixelForValue(100):t.chart.getDatasetMeta(t.datasetIndex).data[t.index-1].getProps(["y"],!0).y}a.targets=["chartjsOptions","chartjsData","chartjsCanvas","csvData"],a.values={type:{type:String,default:"line"}},a.defaultCssProperties={"--animation-duration":200,"--axis-color":"#999","--grid-color":"#eee","--line-color":"#aaa","--point-color":"#333","--point-stroke-color":"#fff","--point-stroke-color-hover":"#eee","--bar-fill-color":"#999","--bar-hover-fill-color":"#333","--point-radius":6,"--point-hover-radius":10,"--point-border-width":4,"--point-hover-border-width":3};class i extends r.Controller{showDescriptionWith(t){var e,r,s;if(null==t||null==(e=t.detail)||!e.show)return this.hideContextualDescription(),void this.showOverallDescription();this.hideOverallDescription();const a=null==t||null==(r=t.detail)?void 0:r.value,o=null==t||null==(s=t.detail)?void 0:s.label;this.contextualDescriptionTarget.innerHTML=this.contextualDescriptionTemplateTarget.innerHTML.replaceAll("%value%",a).replaceAll("%label%",o),this.showContextualDescription()}hideOverallDescription(){this.overallDescriptionTarget.classList.add(...this.hideOverallDescriptionClasses)}showOverallDescription(){this.overallDescriptionTarget.classList.remove(...this.hideOverallDescriptionClasses)}hideContextualDescription(){this.contextualDescriptionTarget.classList.add(...this.hideContextualDescriptionClasses)}showContextualDescription(){this.contextualDescriptionTarget.classList.remove(...this.hideContextualDescriptionClasses)}}i.targets=["overallDescription","contextualDescription","contextualDescriptionTemplate"],i.classes=["hideOverallDescription","hideContextualDescription"];class l extends r.Controller{updateChart(t){this.chartSourceDataTarget.innerHTML=t.detail.dataElement.innerHTML,t.detail.dataElement.remove(),this.chartTarget.dispatchEvent(new CustomEvent(this.eventNameValue))}}l.targets=["chartSourceData","chart"],l.values={eventName:{type:String,default:"update-chart"}};class n extends r.Controller{connect(){this.element.dispatchEvent(new CustomEvent(this.eventNameValue,{detail:{dataElement:this.dataTarget},bubbles:!0,cancelable:!0}))}}n.targets=["data"],n.values={eventName:{type:String,default:"superchart:update-chart"}};const c=[[a,"superchart_controller.js"],[i,"supercharts/describable_controller.js"],[l,"supercharts/filterable_controller.js"],[n,"supercharts/filters_controller.js"]].map(function(t){const e=t[0];return{identifier:s(t[1]),controllerConstructor:e}});t.DescribableController=i,t.FilterableController=l,t.FiltersController=n,t.SuperchartController=a,t.controllerDefinitions=c});
|
2
2
|
//# sourceMappingURL=supercharts-bullet-train.umd.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"supercharts-bullet-train.umd.js","sources":["../../../node_modules/@hotwired/stimulus-webpack-helpers/dist/stimulus-webpack-helpers.js","../../javascript/controllers/superchart_controller.js","../../javascript/controllers/supercharts/describable_controller.js","../../javascript/controllers/supercharts/filterable_controller.js","../../javascript/controllers/supercharts/filters_controller.js","../../javascript/controllers/index.js"],"sourcesContent":["/*\nStimulus Webpack Helpers 1.0.0\nCopyright © 2021 Basecamp, LLC\n */\nfunction definitionsFromContext(context) {\n return context.keys()\n .map((key) => definitionForModuleWithContextAndKey(context, key))\n .filter((value) => value);\n}\nfunction definitionForModuleWithContextAndKey(context, key) {\n const identifier = identifierForContextKey(key);\n if (identifier) {\n return definitionForModuleAndIdentifier(context(key), identifier);\n }\n}\nfunction definitionForModuleAndIdentifier(module, identifier) {\n const controllerConstructor = module.default;\n if (typeof controllerConstructor == \"function\") {\n return { identifier, controllerConstructor };\n }\n}\nfunction identifierForContextKey(key) {\n const logicalName = (key.match(/^(?:\\.\\/)?(.+)(?:[_-]controller\\..+?)$/) || [])[1];\n if (logicalName) {\n return logicalName.replace(/_/g, \"-\").replace(/\\//g, \"--\");\n }\n}\n\nexport { definitionForModuleAndIdentifier, definitionForModuleWithContextAndKey, definitionsFromContext, identifierForContextKey };\n","import { SuperchartChartjsController, parseContentsAsJSON } from '@supercharts/stimulus-base'\nimport * as d3 from \"d3\"\n\nexport default class extends SuperchartChartjsController {\n static targets = [ \"chartjsOptions\", \"chartjsData\", \"chartjsCanvas\", \"csvData\" ]\n static values = {\n type: { \n type: String,\n default: \"line\"\n }\n }\n \n static defaultCssProperties = {\n '--animation-duration': 200, // milliseconds\n '--axis-color': '#999',\n '--grid-color': '#eee',\n '--line-color': '#aaa',\n '--point-color': '#333',\n '--point-stroke-color': '#fff',\n '--point-stroke-color-hover': '#eee',\n '--bar-fill-color': '#999',\n '--bar-hover-fill-color': '#333',\n '--point-radius': 6,\n '--point-hover-radius': 10,\n '--point-border-width': 4,\n '--point-hover-border-width': 3,\n }\n \n connect() {\n super.connect()\n }\n \n updateChart() {\n super.updateChart()\n }\n \n describeDataForX(event) {\n const point = event?.tooltip?.dataPoints[0]\n const dataIndex = point.dataIndex\n this.dispatch(\"description-requested\", { detail: {\n label: this.csvData[dataIndex][this.csvData.columns[1]],\n value: this.csvData[dataIndex][this.csvData.columns[3]],\n show: !!event?.tooltip?.opacity\n } })\n }\n \n parseCsvData() {\n this.csvData = d3.csvParse(this.csvDataTarget.innerHTML.trim())\n console.log(this.csvData)\n }\n \n get chartjsData() {\n if (this.hasChartJsDataTarget) {\n return super.chartjsData()\n }\n if (!this.hasCsvDataTarget) {\n console.warn(`The chart needs data in a in a csv target or in a chartjsData target (in chart.js JSON)`)\n return []\n }\n \n this.parseCsvData()\n \n return {\n labels: this.csvData.map(d => d[this.csvData.columns[0]]),\n datasets: [{\n type: this.typeValue,\n label: \"Value\",\n data: this.csvData.map(d => d[this.csvData.columns[2]])\n }]\n }\n }\n \n get chartjsOptions() {\n let options = {\n ...this.defaultOptions\n }\n \n if (this.hasChartjsOptionsTarget) {\n options = {\n ...options,\n ...parseContentsAsJSON(this.chartjsOptionsTarget)\n }\n }\n \n return this.parseForCssVars(options)\n }\n \n get animationOptions() {\n if (this.runAnimations === false) { return false }\n return {\n x: {\n type: 'number',\n easing: 'linear',\n duration: this.delayBetweenPoints,\n from: NaN, // the point is initially skipped\n delay: (ctx) => {\n if (ctx.type !== 'data' || ctx.xStarted) {\n return 0;\n }\n ctx.xStarted = true;\n return ctx.index * this.delayBetweenPoints;\n }\n },\n y: {\n type: 'number',\n easing: 'linear',\n duration: this.delayBetweenPoints,\n from: previousY,\n delay: (ctx) => {\n if (ctx.type !== 'data' || ctx.yStarted) {\n return 0;\n }\n ctx.yStarted = true;\n return ctx.index * this.delayBetweenPoints;\n }\n }\n }\n }\n\n // You can set default options in this getter for all your charts.\n get defaultOptions() {\n const axisColor = this.cssPropertyValue('--axis-color')\n return {\n maintainAspectRatio: false,\n animation: this.animationOptions,\n interaction: {\n mode: 'index',\n intersect: false,\n },\n resizeDelay: 200, // milliseconds\n onResize: this.handleResize.bind(this),\n plugins: {\n legend: {\n display: false,\n },\n tooltip: {\n enabled: false,\n position: 'nearest',\n external: this.describeDataForX.bind(this)\n }\n },\n color: axisColor,\n fill: false,\n lineTension: 0.3,\n borderColor: this.cssPropertyValue('--line-color'),\n borderCapStyle: \"butt\",\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: \"miter\",\n pointBorderColor: this.cssPropertyValue('--point-stroke-color'),\n pointBackgroundColor: this.cssPropertyValue('--point-color'),\n pointHoverBackgroundColor: this.cssPropertyValue('--point-color'),\n pointHoverBorderColor: this.cssPropertyValue('--point-stroke-color-hover'),\n pointRadius: Number(this.cssPropertyValue('--point-radius')),\n pointHoverRadius: Number(this.cssPropertyValue('--point-hover-radius')),\n pointBorderWidth: Number(this.cssPropertyValue('--point-border-width')),\n pointHoverBorderWidth: Number(this.cssPropertyValue('--point-hover-border-width')),\n pointHitRadius: 10,\n backgroundColor: this.cssPropertyValue('--bar-fill-color'),\n hoverBackgroundColor: this.cssPropertyValue('--bar-hover-fill-color'),\n spanGaps: false,\n scales: {\n x: {\n grid: {\n color: this.cssPropertyValue('--grid-color'),\n borderColor: axisColor,\n tickColor: axisColor,\n },\n ticks: {\n color: axisColor,\n tickColor: axisColor\n }\n },\n y: {\n grid: {\n color: this.cssPropertyValue('--grid-color'),\n borderColor: axisColor,\n tickColor: axisColor,\n },\n ticks: {\n color: axisColor,\n tickColor: axisColor\n },\n suggestedMin: 0,\n suggestedMax: 10\n }\n }\n }\n }\n \n get delayBetweenPoints() {\n return this.cssPropertyValue('--animation-duration') / this.chartjsData?.datasets[0]?.data?.length\n }\n}\n\nfunction previousY (ctx) {\n return ctx.index === 0 ? ctx.chart.scales.y.getPixelForValue(100) : ctx.chart.getDatasetMeta(ctx.datasetIndex).data[ctx.index - 1].getProps(['y'], true).y;\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ \"overallDescription\", \"contextualDescription\", \"contextualDescriptionTemplate\" ]\n static classes = [ \"hideOverallDescription\", \"hideContextualDescription\" ]\n \n showDescriptionWith(event) {\n if (!event?.detail?.show) {\n this.hideContextualDescription()\n this.showOverallDescription()\n return\n }\n \n this.hideOverallDescription()\n const value = event?.detail?.value\n const label = event?.detail?.label\n let newHTML = this.contextualDescriptionTemplateTarget.innerHTML\n this.contextualDescriptionTarget.innerHTML = newHTML\n .replaceAll(\"%value%\", value)\n .replaceAll(\"%label%\", label)\n this.showContextualDescription()\n }\n \n hideOverallDescription() {\n this.overallDescriptionTarget.classList.add(...this.hideOverallDescriptionClasses)\n }\n \n showOverallDescription() {\n this.overallDescriptionTarget.classList.remove(...this.hideOverallDescriptionClasses)\n }\n \n hideContextualDescription() {\n this.contextualDescriptionTarget.classList.add(...this.hideContextualDescriptionClasses)\n }\n \n showContextualDescription() {\n this.contextualDescriptionTarget.classList.remove(...this.hideContextualDescriptionClasses)\n }\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ \"chartSourceData\", \"chart\" ]\n static values = {\n eventName: {\n type: String,\n default: \"update-chart\"\n }\n }\n \n updateChart(event) {\n this.chartSourceDataTarget.innerHTML = event.detail.dataElement.innerHTML\n event.detail.dataElement.remove()\n this.chartTarget.dispatchEvent(new CustomEvent(this.eventNameValue))\n }\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ \"data\" ]\n static values = {\n eventName: {\n type: String,\n default: \"superchart:update-chart\"\n }\n }\n \n connect() {\n this.element.dispatchEvent(\n new CustomEvent(this.eventNameValue, {\n detail: { dataElement: this.dataTarget },\n bubbles: true,\n cancelable: true\n })\n )\n }\n}","import { identifierForContextKey } from \"@hotwired/stimulus-webpack-helpers\"\n\nimport SuperchartController from \"./superchart_controller\"\nimport DescribableController from \"./supercharts/describable_controller\"\nimport FilterableController from \"./supercharts/filterable_controller\"\nimport FiltersController from \"./supercharts/filters_controller\"\n\nexport const controllerDefinitions = [\n [SuperchartController, \"superchart_controller.js\"],\n [DescribableController, \"supercharts/describable_controller.js\"],\n [FilterableController, \"supercharts/filterable_controller.js\"],\n [FiltersController, \"supercharts/filters_controller.js\"],\n].map(function(d) {\n const key = d[1]\n const controller = d[0]\n return {\n identifier: identifierForContextKey(key),\n controllerConstructor: controller\n }\n})\n\nexport {\n SuperchartController,\n DescribableController,\n FilterableController,\n FiltersController,\n}\n"],"names":["identifierForContextKey","key","logicalName","match","replace","_class","connect","super","updateChart","describeDataForX","event","_event$tooltip","_event$tooltip2","tooltip","dataPoints","dataIndex","this","dispatch","detail","label","csvData","columns","value","show","opacity","parseCsvData","d3","csvParse","csvDataTarget","innerHTML","trim","console","log","chartjsData","hasChartJsDataTarget","hasCsvDataTarget","labels","map","d","datasets","type","typeValue","data","warn","chartjsOptions","options","defaultOptions","hasChartjsOptionsTarget","parseContentsAsJSON","chartjsOptionsTarget","parseForCssVars","animationOptions","runAnimations","x","easing","duration","delayBetweenPoints","from","NaN","delay","ctx","xStarted","index","y","previousY","yStarted","axisColor","cssPropertyValue","maintainAspectRatio","animation","interaction","mode","intersect","resizeDelay","onResize","handleResize","bind","plugins","legend","display","enabled","position","external","color","fill","lineTension","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","pointBorderColor","pointBackgroundColor","pointHoverBackgroundColor","pointHoverBorderColor","pointRadius","Number","pointHoverRadius","pointBorderWidth","pointHoverBorderWidth","pointHitRadius","backgroundColor","hoverBackgroundColor","spanGaps","scales","grid","tickColor","ticks","suggestedMin","suggestedMax","_this$chartjsData","_this$chartjsData$dat","_this$chartjsData$dat2","length","chart","getPixelForValue","getDatasetMeta","datasetIndex","getProps","targets","values","String","default","defaultCssProperties","Controller","showDescriptionWith","_event$detail","_event$detail2","_event$detail3","hideContextualDescription","showOverallDescription","hideOverallDescription","contextualDescriptionTarget","contextualDescriptionTemplateTarget","replaceAll","showContextualDescription","overallDescriptionTarget","classList","add","hideOverallDescriptionClasses","remove","hideContextualDescriptionClasses","classes","chartSourceDataTarget","dataElement","chartTarget","dispatchEvent","CustomEvent","eventNameValue","eventName","element","dataTarget","bubbles","cancelable","controllerDefinitions","SuperchartController","DescribableController","FilterableController","FiltersController","controller","identifier","controllerConstructor"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"supercharts-bullet-train.umd.js","sources":["../../../node_modules/@hotwired/stimulus-webpack-helpers/dist/stimulus-webpack-helpers.js","../../javascript/controllers/superchart_controller.js","../../javascript/controllers/supercharts/describable_controller.js","../../javascript/controllers/supercharts/filterable_controller.js","../../javascript/controllers/supercharts/filters_controller.js","../../javascript/controllers/index.js"],"sourcesContent":["/*\nStimulus Webpack Helpers 1.0.0\nCopyright © 2021 Basecamp, LLC\n */\nfunction definitionsFromContext(context) {\n return context.keys()\n .map((key) => definitionForModuleWithContextAndKey(context, key))\n .filter((value) => value);\n}\nfunction definitionForModuleWithContextAndKey(context, key) {\n const identifier = identifierForContextKey(key);\n if (identifier) {\n return definitionForModuleAndIdentifier(context(key), identifier);\n }\n}\nfunction definitionForModuleAndIdentifier(module, identifier) {\n const controllerConstructor = module.default;\n if (typeof controllerConstructor == \"function\") {\n return { identifier, controllerConstructor };\n }\n}\nfunction identifierForContextKey(key) {\n const logicalName = (key.match(/^(?:\\.\\/)?(.+)(?:[_-]controller\\..+?)$/) || [])[1];\n if (logicalName) {\n return logicalName.replace(/_/g, \"-\").replace(/\\//g, \"--\");\n }\n}\n\nexport { definitionForModuleAndIdentifier, definitionForModuleWithContextAndKey, definitionsFromContext, identifierForContextKey };\n","import { SuperchartChartjsController, parseContentsAsJSON, parseContentsAsCsv } from '@supercharts/stimulus-base'\n\nexport default class extends SuperchartChartjsController {\n static targets = [ \"chartjsOptions\", \"chartjsData\", \"chartjsCanvas\", \"csvData\" ]\n static values = {\n type: { \n type: String,\n default: \"line\"\n }\n }\n \n static defaultCssProperties = {\n '--animation-duration': 200, // milliseconds\n '--axis-color': '#999',\n '--grid-color': '#eee',\n '--line-color': '#aaa',\n '--point-color': '#333',\n '--point-stroke-color': '#fff',\n '--point-stroke-color-hover': '#eee',\n '--bar-fill-color': '#999',\n '--bar-hover-fill-color': '#333',\n '--point-radius': 6,\n '--point-hover-radius': 10,\n '--point-border-width': 4,\n '--point-hover-border-width': 3,\n }\n \n connect() {\n super.connect()\n }\n \n updateChart() {\n super.updateChart()\n }\n \n describeDataForX(event) {\n const point = event?.tooltip?.dataPoints[0]\n const dataIndex = point.dataIndex\n this.dispatch(\"description-requested\", { detail: {\n label: this.csvData[dataIndex][this.csvData.columns[1]],\n value: this.csvData[dataIndex][this.csvData.columns[3]],\n show: !!event?.tooltip?.opacity\n } })\n }\n \n parseCsvData() {\n this.csvData = parseContentsAsCsv(this.csvDataTarget)\n }\n \n get chartjsData() {\n if (this.hasChartJsDataTarget) {\n return super.chartjsData()\n }\n if (!this.hasCsvDataTarget) {\n console.warn(`The chart needs data in a in a csv target or in a chartjsData target (in chart.js JSON)`)\n return []\n }\n \n this.parseCsvData()\n \n return {\n labels: this.csvData.map(d => d[this.csvData.columns[0]]),\n datasets: [{\n type: this.typeValue,\n label: \"Value\",\n data: this.csvData.map(d => d[this.csvData.columns[2]])\n }]\n }\n }\n \n get chartjsOptions() {\n let options = {\n ...this.defaultOptions\n }\n \n if (this.hasChartjsOptionsTarget) {\n options = {\n ...options,\n ...parseContentsAsJSON(this.chartjsOptionsTarget)\n }\n }\n \n return this.parseForCssVars(options)\n }\n \n get animationOptions() {\n if (this.runAnimations === false) { return false }\n return {\n x: {\n type: 'number',\n easing: 'linear',\n duration: this.delayBetweenPoints,\n from: NaN, // the point is initially skipped\n delay: (ctx) => {\n if (ctx.type !== 'data' || ctx.xStarted) {\n return 0;\n }\n ctx.xStarted = true;\n return ctx.index * this.delayBetweenPoints;\n }\n },\n y: {\n type: 'number',\n easing: 'linear',\n duration: this.delayBetweenPoints,\n from: previousY,\n delay: (ctx) => {\n if (ctx.type !== 'data' || ctx.yStarted) {\n return 0;\n }\n ctx.yStarted = true;\n return ctx.index * this.delayBetweenPoints;\n }\n }\n }\n }\n\n // You can set default options in this getter for all your charts.\n get defaultOptions() {\n const axisColor = this.cssPropertyValue('--axis-color')\n return {\n maintainAspectRatio: false,\n animation: this.animationOptions,\n interaction: {\n mode: 'index',\n intersect: false,\n },\n resizeDelay: 200, // milliseconds\n onResize: this.handleResize.bind(this),\n plugins: {\n legend: {\n display: false,\n },\n tooltip: {\n enabled: false,\n position: 'nearest',\n external: this.describeDataForX.bind(this)\n }\n },\n color: axisColor,\n fill: false,\n lineTension: 0.3,\n borderColor: this.cssPropertyValue('--line-color'),\n borderCapStyle: \"butt\",\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: \"miter\",\n pointBorderColor: this.cssPropertyValue('--point-stroke-color'),\n pointBackgroundColor: this.cssPropertyValue('--point-color'),\n pointHoverBackgroundColor: this.cssPropertyValue('--point-color'),\n pointHoverBorderColor: this.cssPropertyValue('--point-stroke-color-hover'),\n pointRadius: Number(this.cssPropertyValue('--point-radius')),\n pointHoverRadius: Number(this.cssPropertyValue('--point-hover-radius')),\n pointBorderWidth: Number(this.cssPropertyValue('--point-border-width')),\n pointHoverBorderWidth: Number(this.cssPropertyValue('--point-hover-border-width')),\n pointHitRadius: 10,\n backgroundColor: this.cssPropertyValue('--bar-fill-color'),\n hoverBackgroundColor: this.cssPropertyValue('--bar-hover-fill-color'),\n spanGaps: false,\n scales: {\n x: {\n grid: {\n color: this.cssPropertyValue('--grid-color'),\n borderColor: axisColor,\n tickColor: axisColor,\n },\n ticks: {\n color: axisColor,\n tickColor: axisColor\n }\n },\n y: {\n grid: {\n color: this.cssPropertyValue('--grid-color'),\n borderColor: axisColor,\n tickColor: axisColor,\n },\n ticks: {\n color: axisColor,\n tickColor: axisColor\n },\n suggestedMin: 0,\n suggestedMax: 10\n }\n }\n }\n }\n \n get delayBetweenPoints() {\n return this.cssPropertyValue('--animation-duration') / this.chartjsData?.datasets[0]?.data?.length\n }\n}\n\nfunction previousY (ctx) {\n return ctx.index === 0 ? ctx.chart.scales.y.getPixelForValue(100) : ctx.chart.getDatasetMeta(ctx.datasetIndex).data[ctx.index - 1].getProps(['y'], true).y;\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ \"overallDescription\", \"contextualDescription\", \"contextualDescriptionTemplate\" ]\n static classes = [ \"hideOverallDescription\", \"hideContextualDescription\" ]\n \n showDescriptionWith(event) {\n if (!event?.detail?.show) {\n this.hideContextualDescription()\n this.showOverallDescription()\n return\n }\n \n this.hideOverallDescription()\n const value = event?.detail?.value\n const label = event?.detail?.label\n let newHTML = this.contextualDescriptionTemplateTarget.innerHTML\n this.contextualDescriptionTarget.innerHTML = newHTML\n .replaceAll(\"%value%\", value)\n .replaceAll(\"%label%\", label)\n this.showContextualDescription()\n }\n \n hideOverallDescription() {\n this.overallDescriptionTarget.classList.add(...this.hideOverallDescriptionClasses)\n }\n \n showOverallDescription() {\n this.overallDescriptionTarget.classList.remove(...this.hideOverallDescriptionClasses)\n }\n \n hideContextualDescription() {\n this.contextualDescriptionTarget.classList.add(...this.hideContextualDescriptionClasses)\n }\n \n showContextualDescription() {\n this.contextualDescriptionTarget.classList.remove(...this.hideContextualDescriptionClasses)\n }\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ \"chartSourceData\", \"chart\" ]\n static values = {\n eventName: {\n type: String,\n default: \"update-chart\"\n }\n }\n \n updateChart(event) {\n this.chartSourceDataTarget.innerHTML = event.detail.dataElement.innerHTML\n event.detail.dataElement.remove()\n this.chartTarget.dispatchEvent(new CustomEvent(this.eventNameValue))\n }\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ \"data\" ]\n static values = {\n eventName: {\n type: String,\n default: \"superchart:update-chart\"\n }\n }\n \n connect() {\n this.element.dispatchEvent(\n new CustomEvent(this.eventNameValue, {\n detail: { dataElement: this.dataTarget },\n bubbles: true,\n cancelable: true\n })\n )\n }\n}","import { identifierForContextKey } from \"@hotwired/stimulus-webpack-helpers\"\n\nimport SuperchartController from \"./superchart_controller\"\nimport DescribableController from \"./supercharts/describable_controller\"\nimport FilterableController from \"./supercharts/filterable_controller\"\nimport FiltersController from \"./supercharts/filters_controller\"\n\nexport const controllerDefinitions = [\n [SuperchartController, \"superchart_controller.js\"],\n [DescribableController, \"supercharts/describable_controller.js\"],\n [FilterableController, \"supercharts/filterable_controller.js\"],\n [FiltersController, \"supercharts/filters_controller.js\"],\n].map(function(d) {\n const key = d[1]\n const controller = d[0]\n return {\n identifier: identifierForContextKey(key),\n controllerConstructor: controller\n }\n})\n\nexport {\n SuperchartController,\n DescribableController,\n FilterableController,\n FiltersController,\n}\n"],"names":["identifierForContextKey","key","logicalName","match","replace","SuperchartChartjsController","connect","super","updateChart","describeDataForX","event","dataIndex","tooltip","_event$tooltip","dataPoints","this","dispatch","detail","label","csvData","columns","value","show","_event$tooltip2","opacity","parseCsvData","parseContentsAsCsv","csvDataTarget","chartjsData","hasChartJsDataTarget","hasCsvDataTarget","labels","map","d","datasets","type","typeValue","data","console","warn","chartjsOptions","options","defaultOptions","hasChartjsOptionsTarget","parseContentsAsJSON","chartjsOptionsTarget","parseForCssVars","animationOptions","runAnimations","x","easing","duration","delayBetweenPoints","from","NaN","delay","ctx","xStarted","index","y","previousY","yStarted","axisColor","cssPropertyValue","maintainAspectRatio","animation","interaction","mode","intersect","resizeDelay","onResize","handleResize","bind","plugins","legend","display","enabled","position","external","color","fill","lineTension","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","pointBorderColor","pointBackgroundColor","pointHoverBackgroundColor","pointHoverBorderColor","pointRadius","Number","pointHoverRadius","pointBorderWidth","pointHoverBorderWidth","pointHitRadius","backgroundColor","hoverBackgroundColor","spanGaps","scales","grid","tickColor","ticks","suggestedMin","suggestedMax","_this$chartjsData","_this$chartjsData$dat","_this$chartjsData$dat2","length","chart","getPixelForValue","getDatasetMeta","datasetIndex","getProps","targets","values","String","default","defaultCssProperties","Controller","showDescriptionWith","_event$detail","_event$detail2","_event$detail3","hideContextualDescription","showOverallDescription","hideOverallDescription","contextualDescriptionTarget","innerHTML","contextualDescriptionTemplateTarget","replaceAll","showContextualDescription","overallDescriptionTarget","classList","add","hideOverallDescriptionClasses","remove","hideContextualDescriptionClasses","classes","chartSourceDataTarget","dataElement","chartTarget","dispatchEvent","CustomEvent","eventNameValue","eventName","_class","element","dataTarget","bubbles","cancelable","controllerDefinitions","SuperchartController","DescribableController","FilterableController","FiltersController","controller","identifier","controllerConstructor"],"mappings":"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"}
|
@@ -1,5 +1,4 @@
|
|
1
|
-
import { SuperchartChartjsController, parseContentsAsJSON } from '@supercharts/stimulus-base'
|
2
|
-
import * as d3 from "d3"
|
1
|
+
import { SuperchartChartjsController, parseContentsAsJSON, parseContentsAsCsv } from '@supercharts/stimulus-base'
|
3
2
|
|
4
3
|
export default class extends SuperchartChartjsController {
|
5
4
|
static targets = [ "chartjsOptions", "chartjsData", "chartjsCanvas", "csvData" ]
|
@@ -45,7 +44,7 @@ export default class extends SuperchartChartjsController {
|
|
45
44
|
}
|
46
45
|
|
47
46
|
parseCsvData() {
|
48
|
-
this.csvData =
|
47
|
+
this.csvData = parseContentsAsCsv(this.csvDataTarget)
|
49
48
|
}
|
50
49
|
|
51
50
|
get chartjsData() {
|
@@ -24,13 +24,7 @@
|
|
24
24
|
<div class="relative">
|
25
25
|
<div data-supercharts--describable-target="overallDescription">
|
26
26
|
<h2 class="text-xs uppercase dark:text-white/50">
|
27
|
-
|
28
|
-
Tangible Things last 7 days
|
29
|
-
<% elsif @timespan == "1m" %>
|
30
|
-
Tangible Things last 31 days
|
31
|
-
<% elsif @timespan == "ytd" %>
|
32
|
-
Tangible Things since start of year
|
33
|
-
<% end %>
|
27
|
+
<%= t(['tangible_things.chart.description', @timespan].join('.')) %>
|
34
28
|
</h2>
|
35
29
|
<p class="font-semibold dark:text-white mt-2" style="font-size: 1.8rem;">
|
36
30
|
<%= @total %>
|
@@ -40,13 +34,7 @@
|
|
40
34
|
<template data-supercharts--describable-target="contextualDescriptionTemplate">
|
41
35
|
<p class="font-semibold dark:text-white mb-1" style="font-size: 1.6rem;">%value%</p>
|
42
36
|
<p class="text-xs uppercase dark:text-white/50">
|
43
|
-
|
44
|
-
Tangible Things on <span class="whitespace-nowrap">%label%</span>
|
45
|
-
<% elsif @period == :week %>
|
46
|
-
Tangible Things in <span class="whitespace-nowrap">%label%</span>
|
47
|
-
<% elsif @period == :month %>
|
48
|
-
Tangible Things in <span class="whitespace-nowrap">%label%</span>
|
49
|
-
<% end %>
|
37
|
+
<%= t(['tangible_things.chart.contextual_description', @timespan].join('.')).html_safe %>
|
50
38
|
</p>
|
51
39
|
</template>
|
52
40
|
</div>
|
@@ -56,9 +44,9 @@
|
|
56
44
|
>
|
57
45
|
<div class="flex items-center justify-center">
|
58
46
|
<div class="inline-flex space-x-1" role="group">
|
59
|
-
<%= render "shared/supercharts/filter_button", path: polymorphic_path([:account, @absolutely_abstract_creative_concept, :tangible_things, :chart], timespan: "1w"),
|
60
|
-
<%= render "shared/supercharts/filter_button", path: polymorphic_path([:account, @absolutely_abstract_creative_concept, :tangible_things, :chart], timespan: "1m")
|
61
|
-
<%= render "shared/supercharts/filter_button", path: polymorphic_path([:account, @absolutely_abstract_creative_concept, :tangible_things, :chart], timespan: "ytd"),
|
47
|
+
<%= render "shared/supercharts/filter_button", label: t("tangible_things.chart.filters.1w.abbr"), alt: t("tangible_things.chart.filters.1w.label"), path: polymorphic_path([:account, @absolutely_abstract_creative_concept, :tangible_things, :chart], timespan: "1w"), first: true %>
|
48
|
+
<%= render "shared/supercharts/filter_button", label: t("tangible_things.chart.filters.1m.abbr"), alt: t("tangible_things.chart.filters.1m.label"), path: polymorphic_path([:account, @absolutely_abstract_creative_concept, :tangible_things, :chart], timespan: "1m") %>
|
49
|
+
<%= render "shared/supercharts/filter_button", label: t("tangible_things.chart.filters.ytd.abbr"), alt: t("tangible_things.chart.filters.ytd.label"), path: polymorphic_path([:account, @absolutely_abstract_creative_concept, :tangible_things, :chart], timespan: "ytd"), last: true %>
|
62
50
|
</div>
|
63
51
|
</div>
|
64
52
|
<template data-supercharts--filters-target="data">
|
@@ -77,13 +65,7 @@
|
|
77
65
|
data-action="update-chart->superchart#updateChart"
|
78
66
|
>
|
79
67
|
<canvas data-superchart-target="chartjsCanvas" style="height: var(--chart-height)">
|
80
|
-
|
81
|
-
Chart of Tangible Things last 7 days
|
82
|
-
<% elsif @timespan == "1m" %>
|
83
|
-
Chart of Tangible Things last 31 days
|
84
|
-
<% elsif @timespan == "ytd" %>
|
85
|
-
Chart of Tangible Things since start of year
|
86
|
-
<% end %>
|
68
|
+
<%= t(['tangible_things.chart.alt_description', @timespan].join('.')) %>
|
87
69
|
</canvas>
|
88
70
|
<template data-superchart-target="csvData" data-supercharts--filterable-target="chartSourceData"></template>
|
89
71
|
<template data-superchart-target="chartjsOptions"></template>
|
@@ -2,8 +2,15 @@
|
|
2
2
|
first ||= false
|
3
3
|
last ||= false
|
4
4
|
label ||= "link"
|
5
|
+
alt ||= nil
|
5
6
|
path ||= ""
|
6
7
|
button_classes = "px-5 py-1.5 dark:text-white font-small text-xs leading-tight uppercase hover:bg-blue-800/50 hover:text-white focus:bg-blue-700 focus:outline-none focus:ring-0 active:bg-blue-800 transition duration-150 ease-in-out rounded-lg"
|
8
|
+
options = {
|
9
|
+
class: [button_classes, "bg-gray-400 dark:bg-blue-800 text-white hover:bg-blue-400 dark:hover:bg-blue-800/100": current_page?(path)]
|
10
|
+
}
|
11
|
+
unless alt.nil?
|
12
|
+
options[:title] = alt.upcase_first
|
13
|
+
end
|
7
14
|
%>
|
8
15
|
|
9
|
-
<%= link_to label, path,
|
16
|
+
<%= link_to label, path, options %>
|
@@ -3,9 +3,9 @@ module BulletTrain
|
|
3
3
|
class Engine < ::Rails::Engine
|
4
4
|
initializer "bullet_train.super_scaffolding.templates.register_template_path" do |app|
|
5
5
|
# Register the base path of this package with the Super Scaffolding engine.
|
6
|
-
BulletTrain::SuperScaffolding.template_paths << File.expand_path(
|
6
|
+
BulletTrain::SuperScaffolding.template_paths << File.expand_path("../../../..", __FILE__)
|
7
7
|
BulletTrain::SuperScaffolding.scaffolders.merge!({
|
8
|
-
"supercharts:chart" => "BulletTrain::Supercharts::Scaffolders::ChartScaffolder"
|
8
|
+
"supercharts:chart" => "BulletTrain::Supercharts::Scaffolders::ChartScaffolder"
|
9
9
|
})
|
10
10
|
end
|
11
11
|
end
|
@@ -19,14 +19,14 @@ module BulletTrain
|
|
19
19
|
puts ""
|
20
20
|
exit
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
target_model, parent_models = argv
|
24
24
|
parent_models = parent_models.split(",")
|
25
25
|
parent_models += ["Team"]
|
26
26
|
parent_models = parent_models.map(&:classify).uniq
|
27
27
|
|
28
28
|
transformer = Scaffolding::SuperchartsChartTransformer.new(target_model, parent_models)
|
29
|
-
|
29
|
+
|
30
30
|
transformer.scaffold_supercharts
|
31
31
|
end
|
32
32
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require "csv"
|
2
2
|
|
3
3
|
class Account::Scaffolding::CompletelyConcrete::TangibleThings::TangibleThingsChartController < Account::ApplicationController
|
4
4
|
include ActionView::Helpers::NumberHelper
|
@@ -7,50 +7,39 @@ class Account::Scaffolding::CompletelyConcrete::TangibleThings::TangibleThingsCh
|
|
7
7
|
# GET /account/scaffolding/absolutely_abstract/creative_concepts/:absolutely_abstract_creative_concept_id/completely_concrete/tangible_things/chart
|
8
8
|
def show
|
9
9
|
@tangible_things = @absolutely_abstract_creative_concept.completely_concrete_tangible_things
|
10
|
-
|
10
|
+
|
11
11
|
@timespan = params[:timespan]
|
12
12
|
case @timespan
|
13
13
|
when "ytd"
|
14
14
|
range = Time.now.beginning_of_year..Time.now
|
15
15
|
range_days = (range.max - range.min).seconds.in_days
|
16
|
-
if range_days > 4.months.in_days
|
17
|
-
|
16
|
+
@period = if range_days > 4.months.in_days
|
17
|
+
:month
|
18
18
|
elsif range_days > 1.month.in_days
|
19
|
-
|
19
|
+
:week
|
20
20
|
else
|
21
|
-
|
21
|
+
:day
|
22
22
|
end
|
23
|
-
|
23
|
+
series = @tangible_things.group_by_period(@period, :created_at, range: range, expand_range: true)
|
24
24
|
when "1w"
|
25
|
-
range = (1.weeks.ago)..Time.now
|
25
|
+
range = (1.weeks.ago.beginning_of_day)..Time.now
|
26
26
|
@period = :day
|
27
|
-
|
27
|
+
series = @tangible_things.group_by_period(@period, :created_at, range: range, expand_range: true)
|
28
28
|
else
|
29
|
+
range = (1.month.ago + 1.day).beginning_of_day..Time.now
|
29
30
|
@period = :day
|
30
|
-
|
31
|
-
end
|
32
|
-
|
33
|
-
@total = data.values.reduce(:+)
|
34
|
-
|
35
|
-
date_format_abbr = if @period == :day
|
36
|
-
"%e"
|
37
|
-
elsif @period == :week
|
38
|
-
"Week of %b %e"
|
39
|
-
elsif @period == :month
|
40
|
-
"%b"
|
41
|
-
end
|
42
|
-
|
43
|
-
date_format_full = if @period == :day
|
44
|
-
"%B %e"
|
45
|
-
elsif @period == :week
|
46
|
-
"week of %B %e"
|
47
|
-
elsif @period == :month
|
48
|
-
"%B, %Y"
|
31
|
+
series = @tangible_things.group_by_period(@period, :created_at, range: range)
|
49
32
|
end
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
33
|
+
|
34
|
+
counts = series.count
|
35
|
+
@total = counts.values.reduce(:+)
|
36
|
+
|
37
|
+
date_format_abbr = t(["tangible_things.chart.date_abbr", @period].join("."))
|
38
|
+
date_format_full = t(["tangible_things.chart.date_full", @period].join("."))
|
39
|
+
|
40
|
+
@csv = CSV.generate(" ", headers: %w[date_abbr date_full count count_formatted], write_headers: true, encoding: "UTF-8") do |csv|
|
41
|
+
counts.each do |date, count|
|
42
|
+
csv.add_row [date.strftime(date_format_abbr), date.strftime(date_format_full), count, number_with_delimiter(count)]
|
54
43
|
end
|
55
44
|
end
|
56
45
|
end
|
@@ -1,16 +1,18 @@
|
|
1
1
|
require "scaffolding/supercharts_transformer"
|
2
2
|
|
3
3
|
class Scaffolding::SuperchartsChartTransformer < Scaffolding::SuperchartsTransformer
|
4
|
+
RUBY_NEW_CHARTS_HOOK = "# 📈 super scaffolding will insert new charts above this line."
|
5
|
+
|
4
6
|
def scaffold_supercharts
|
5
7
|
super
|
6
|
-
|
8
|
+
|
7
9
|
# copy files over and do the appropriate string replace.
|
8
10
|
files = [
|
9
11
|
"./lib/scaffolding/app/controllers/account/scaffolding/completely_concrete/tangible_things/tangible_things_chart_controller.rb",
|
10
12
|
"./app/views/account/scaffolding/completely_concrete/tangible_things/tangible_things_chart",
|
11
|
-
"./app/views/shared/supercharts"
|
13
|
+
"./app/views/shared/supercharts"
|
12
14
|
].compact
|
13
|
-
|
15
|
+
|
14
16
|
files.each do |name|
|
15
17
|
if File.directory?(resolve_template_path(name))
|
16
18
|
scaffold_directory(name)
|
@@ -18,14 +20,64 @@ class Scaffolding::SuperchartsChartTransformer < Scaffolding::SuperchartsTransfo
|
|
18
20
|
scaffold_file(name)
|
19
21
|
end
|
20
22
|
end
|
21
|
-
|
23
|
+
|
24
|
+
# locale
|
25
|
+
locale_file = "./config/locales/en/scaffolding/completely_concrete/tangible_things.en.yml"
|
26
|
+
|
27
|
+
# add locale file if missing
|
28
|
+
unless File.file?(transform_string(locale_file))
|
29
|
+
scaffold_file(locale_file)
|
30
|
+
add_locale_helper_export_fix
|
31
|
+
end
|
32
|
+
|
33
|
+
# add locale strings for chart
|
34
|
+
scaffold_add_line_to_file(locale_file, RUBY_NEW_CHARTS_HOOK, " account:", prepend: true, increase_indent: true, exact_match: true)
|
35
|
+
# ensure the right indentation
|
36
|
+
scaffold_replace_line_in_file(locale_file, " #{RUBY_NEW_CHARTS_HOOK}", " #{RUBY_NEW_CHARTS_HOOK}")
|
37
|
+
|
38
|
+
locale_yaml = <<~YAML
|
39
|
+
chart:
|
40
|
+
filters:
|
41
|
+
1w:
|
42
|
+
abbr: 1w
|
43
|
+
label: "last week"
|
44
|
+
1m:
|
45
|
+
abbr: 1m
|
46
|
+
label: "last month"
|
47
|
+
ytd:
|
48
|
+
abbr: ytd
|
49
|
+
label: "year to date"
|
50
|
+
description:
|
51
|
+
1w: Tangible Things last 7 days
|
52
|
+
1m: Tangible Things last month
|
53
|
+
ytd: Tangible Things since start of year
|
54
|
+
contextual_description:
|
55
|
+
1w: Tangible Things on <span class="whitespace-nowrap">%label%</span>
|
56
|
+
1m: Tangible Things in <span class="whitespace-nowrap">%label%</span>
|
57
|
+
ytd: Tangible Things in <span class="whitespace-nowrap">%label%</span>
|
58
|
+
alt_description:
|
59
|
+
1w: Chart of Tangible Things last 7 days
|
60
|
+
1m: Chart of Tangible Things last month
|
61
|
+
ytd: Chart of Tangible Things since start of year
|
62
|
+
date_abbr:
|
63
|
+
day: "%e"
|
64
|
+
week: "Week of %b %e"
|
65
|
+
month: "%b"
|
66
|
+
date_full:
|
67
|
+
day: "%B %e"
|
68
|
+
week: "week of %B %e"
|
69
|
+
month: "%B, %Y"
|
70
|
+
YAML
|
71
|
+
|
72
|
+
scaffold_add_line_to_file("./config/locales/en/scaffolding/completely_concrete/tangible_things.en.yml", locale_yaml, RUBY_NEW_CHARTS_HOOK, prepend: true)
|
73
|
+
|
22
74
|
# add children to the show page of their parent.
|
23
75
|
unless cli_options["skip-parent"] || parent == "None"
|
24
76
|
lines_to_add = <<~RUBY
|
25
77
|
<div class="mt-4 [--chart-height:150px] md:[--chart-height:200px]">
|
26
78
|
<%= turbo_frame_tag :charts_tangible_things, src: polymorphic_path([:account, @creative_concept, :tangible_things, :chart], timespan: "1m") do %>
|
27
79
|
<%= render "shared/supercharts/chart_skeleton" do %>
|
28
|
-
|
80
|
+
<%= t('tangible_things.label') %>…
|
29
81
|
<% end %>
|
30
82
|
<% end %>
|
31
83
|
</div>
|
@@ -37,53 +89,53 @@ class Scaffolding::SuperchartsChartTransformer < Scaffolding::SuperchartsTransfo
|
|
37
89
|
prepend: true
|
38
90
|
)
|
39
91
|
end
|
40
|
-
|
92
|
+
|
41
93
|
# add user permissions.
|
42
94
|
add_ability_line_to_roles_yml
|
43
|
-
|
95
|
+
|
44
96
|
# apply routes.
|
45
97
|
# TODO this is a hack and should be in its own RouteFileManipulator class
|
46
98
|
lines = File.read("config/routes.rb").lines.map(&:chomp)
|
47
99
|
account_namespace_found = false
|
48
|
-
|
100
|
+
|
49
101
|
lines.each_with_index do |line, index|
|
50
102
|
if line.match?("namespace :account do")
|
51
103
|
account_namespace_found = true
|
52
104
|
elsif account_namespace_found && line.match?(transform_string("resources :tangible_things"))
|
53
105
|
chart_resource_lines = transform_string("collection do\nresource :chart, only: :show, module: :tangible_things, as: :tangible_things_chart, controller: :tangible_things_chart\nend")
|
54
|
-
if line.match?
|
55
|
-
|
106
|
+
lines[index] = if line.match?(/do$/)
|
107
|
+
"#{line}\n#{chart_resource_lines}\n"
|
56
108
|
else
|
57
|
-
|
109
|
+
"#{line} do\n#{chart_resource_lines}\nend"
|
58
110
|
end
|
59
111
|
end
|
60
112
|
end
|
61
|
-
|
113
|
+
|
62
114
|
File.write("config/routes.rb", lines.join("\n"))
|
63
|
-
|
115
|
+
|
64
116
|
puts `standardrb --fix ./config/routes.rb`
|
65
|
-
|
117
|
+
|
66
118
|
restart_server unless ENV["CI"].present?
|
67
119
|
end
|
68
|
-
|
120
|
+
|
69
121
|
def parent_show_file
|
70
122
|
@target_show_file ||= "./app/views/account/scaffolding/absolutely_abstract/creative_concepts/show.html.erb"
|
71
123
|
end
|
72
|
-
|
124
|
+
|
73
125
|
def transform_string(string)
|
74
126
|
[
|
75
127
|
"Scaffolding::CompletelyConcrete::TangibleThings::TangibleThingsChart",
|
76
|
-
"lib/scaffolding/app"
|
128
|
+
"lib/scaffolding/app"
|
77
129
|
].each do |needle|
|
78
130
|
# TODO There might be more to do here?
|
79
131
|
# What method is this calling?
|
80
132
|
string = string.gsub(needle, encode_double_replacement_fix(replacement_for(needle)))
|
81
133
|
end
|
82
|
-
|
134
|
+
|
83
135
|
string = super(string)
|
84
136
|
decode_double_replacement_fix(string)
|
85
137
|
end
|
86
|
-
|
138
|
+
|
87
139
|
def replacement_for(string)
|
88
140
|
case string
|
89
141
|
when "Scaffolding::CompletelyConcrete::TangibleThings::TangibleThingsChart"
|
@@ -94,4 +146,4 @@ class Scaffolding::SuperchartsChartTransformer < Scaffolding::SuperchartsTransfo
|
|
94
146
|
"🛑"
|
95
147
|
end
|
96
148
|
end
|
97
|
-
end
|
149
|
+
end
|
@@ -1,85 +1,83 @@
|
|
1
1
|
class Scaffolding::SuperchartsRoutesFileManipulator < Scaffolding::RoutesFileManipulator
|
2
|
-
|
3
2
|
def apply(base_namespaces, prepend_namespace_to_child: nil)
|
4
3
|
child_namespaces, child_resource, parent_namespaces, parent_resource = divergent_parts
|
5
|
-
|
4
|
+
|
6
5
|
within = find_or_create_namespaces(base_namespaces)
|
7
|
-
|
6
|
+
|
8
7
|
# e.g. Project and Projects::Deliverable
|
9
8
|
if parent_namespaces.empty? && child_namespaces.one? && parent_resource == child_namespaces.first
|
10
|
-
|
9
|
+
|
11
10
|
# resources :projects do
|
12
11
|
# scope module: 'projects' do
|
13
12
|
# resources :deliverables, only: collection_actions
|
14
13
|
# end
|
15
14
|
# end
|
16
|
-
|
15
|
+
|
17
16
|
parent_within = find_or_convert_resource_block(parent_resource, within: within)
|
18
|
-
|
17
|
+
|
19
18
|
# add the new resource within that namespace.
|
20
19
|
line = "scope module: '#{parent_resource}' do"
|
21
20
|
# TODO you haven't tested this yet.
|
22
21
|
unless (scope_within = find(/#{line}/, parent_within))
|
23
22
|
scope_within = insert([line, "end"], parent_within)
|
24
23
|
end
|
25
|
-
|
24
|
+
|
26
25
|
find_or_create_resource([child_resource], options: "only: collection_actions", within: scope_within)
|
27
|
-
|
26
|
+
|
28
27
|
# namespace :projects do
|
29
28
|
# resources :deliverables, except: collection_actions
|
30
29
|
# end
|
31
|
-
|
30
|
+
|
32
31
|
# We want to see if there are any namespaces one level above the parent itself,
|
33
32
|
# because namespaces with the same name as the resource can exist on the same level.
|
34
33
|
parent_block_start = find_block_parent(parent_within)
|
35
34
|
namespace_line_within = find_or_create_namespaces(child_namespaces, parent_block_start)
|
36
|
-
|
35
|
+
|
37
36
|
if prepend_namespace_to_child.present?
|
38
37
|
namespace_line_within = find_or_create_namespaces([prepend_namespace_to_child], namespace_line_within)
|
39
38
|
end
|
40
|
-
|
39
|
+
|
41
40
|
find_or_create_resource([child_resource], options: "except: collection_actions", within: namespace_line_within)
|
42
41
|
unless find_namespaces(child_namespaces, within)[child_namespaces.last]
|
43
42
|
raise "tried to insert `namespace :#{child_namespaces.last}` but it seems we failed"
|
44
43
|
end
|
45
|
-
|
44
|
+
|
46
45
|
# e.g. Projects::Deliverable and Objective Under It, Abstract::Concept and Concrete::Thing
|
47
46
|
elsif parent_namespaces.any?
|
48
|
-
|
47
|
+
|
49
48
|
# namespace :projects do
|
50
49
|
# resources :deliverables
|
51
50
|
# end
|
52
51
|
top_parent_namespace = find_namespaces(parent_namespaces, within)[parent_namespaces.first]
|
53
|
-
|
52
|
+
|
54
53
|
find_or_create_resource(child_namespaces + [child_resource], within: top_parent_namespace)
|
55
|
-
|
54
|
+
|
56
55
|
# resources :projects_deliverables, path: 'projects/deliverables' do
|
57
56
|
# resources :objectives
|
58
57
|
# end
|
59
58
|
block_parent_within = find_block_parent(top_parent_namespace)
|
60
59
|
parent_namespaces_and_resource = (parent_namespaces + [parent_resource]).join("_")
|
61
60
|
parent_within = find_or_create_resource_block([parent_namespaces_and_resource], options: "path: '#{parent_namespaces_and_resource.tr("_", "/")}'", within: block_parent_within)
|
62
|
-
|
61
|
+
|
63
62
|
if prepend_namespace_to_child.present?
|
64
63
|
parent_within = find_or_create_namespaces([prepend_namespace_to_child], parent_within)
|
65
64
|
end
|
66
|
-
|
65
|
+
|
67
66
|
find_or_create_resource(child_namespaces + [child_resource], within: parent_within)
|
68
67
|
else
|
69
|
-
|
68
|
+
|
70
69
|
begin
|
71
70
|
within = find_or_convert_resource_block(parent_resource, within: within)
|
72
71
|
rescue
|
73
72
|
within = find_or_convert_resource_block(parent_resource, options: "except: collection_actions", within: within)
|
74
73
|
end
|
75
|
-
|
74
|
+
|
76
75
|
if prepend_namespace_to_child.present?
|
77
76
|
within = find_or_create_namespaces([prepend_namespace_to_child], within)
|
78
77
|
end
|
79
|
-
|
78
|
+
|
80
79
|
find_or_create_resource(child_namespaces + [child_resource], options: define_concerns, within: within)
|
81
|
-
|
80
|
+
|
82
81
|
end
|
83
82
|
end
|
84
|
-
|
85
|
-
end
|
83
|
+
end
|
@@ -2,18 +2,16 @@ class Scaffolding::SuperchartsTransformer < Scaffolding::Transformer
|
|
2
2
|
def initialize(child, parents, cli_options = {})
|
3
3
|
super(child, parents, cli_options)
|
4
4
|
end
|
5
|
-
|
5
|
+
|
6
6
|
def scaffold_supercharts
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
add_additional_step :red, "We were not able to generate the routes for your Action Model automatically because: \"#{exception.message}\" You'll need to add them manually, which admittedly can be complicated. See https://blog.bullettrain.co/nested-namespaced-rails-routing-examples/ for guidance. 🙇🏻♂️"
|
17
|
-
end
|
7
|
+
# Update the routes to add the namespace and base resource
|
8
|
+
routes_manipulator = Scaffolding::RoutesFileManipulator.new("config/routes.rb", transform_string("Scaffolding::CompletelyConcrete::TangibleThings"), transform_string("Scaffolding::AbsolutelyAbstract::CreativeConcept"))
|
9
|
+
routes_manipulator.apply(["account"])
|
10
|
+
Scaffolding::FileManipulator.write("config/routes.rb", routes_manipulator.lines)
|
11
|
+
rescue BulletTrain::SuperScaffolding::CannotFindParentResourceException => exception
|
12
|
+
# TODO It would be great if we could automatically generate whatever the structure of the route needs to be and
|
13
|
+
# tell them where to try and inject it. Obviously we can't calculate the line number, otherwise the robots would
|
14
|
+
# have already inserted the routes, but at least we can try to do some of the complicated work for them.
|
15
|
+
add_additional_step :red, "We were not able to generate the routes for your Action Model automatically because: \"#{exception.message}\" You'll need to add them manually, which admittedly can be complicated. See https://blog.bullettrain.co/nested-namespaced-rails-routing-examples/ for guidance. 🙇🏻♂️"
|
18
16
|
end
|
19
|
-
end
|
17
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: supercharts-bullet_train
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pascal Laliberté
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-02-
|
11
|
+
date: 2023-02-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|