supercharts-bullet_train 0.1.7 → 0.1.9
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/controllers/account/scaffolding/completely_concrete/tangible_things/tangible_things_chart_controller.rb +12 -3
- data/app/javascript/controllers/index.js +3 -0
- data/app/javascript/controllers/superchart_controller.js +30 -10
- data/app/javascript/controllers/supercharts/describable_controller.js +39 -0
- data/app/views/account/scaffolding/completely_concrete/tangible_things/tangible_things_chart/show.html.erb +32 -15
- data/lib/bullet_train/supercharts/version.rb +1 -1
- data/lib/scaffolding/supercharts_chart_transformer.rb +3 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cbb5bdc5e3d7b170454e18f76531256757f3e4df925a89d37fdff1103aed36e7
|
4
|
+
data.tar.gz: 26486b34357d1368102ada886f27652b22db276c896247be74ed26f2b57b9596
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b59ac123455039a2aa29467ade5867319365c43ee93d22223e854f79e69692240e770b69b119bc2705c0de577564d77a509aec08a80985c4b94d3ac044347ce0
|
7
|
+
data.tar.gz: f0292d860d9e5c40277e8be9f3946ad35ba60d41dab16b939c604c74cf5d157ed2a528b30da2ad0c11f8f0f940ff4dd1ba1b093f0eebd47b554a47a7cfbd9dfc
|
@@ -1,2 +1,2 @@
|
|
1
|
-
import{SuperchartChartjsController as t}from"@supercharts/stimulus-base";import*as
|
1
|
+
import{SuperchartChartjsController as t,parseContentsAsJSON as e}from"@supercharts/stimulus-base";import*as a from"d3";import{Controller as r}from"@hotwired/stimulus";function s(t){const e=(t.match(/^(?:\.\/)?(.+)(?:[_-]controller\..+?)$/)||[])[1];if(e)return e.replace(/_/g,"-").replace(/\//g,"--")}class o extends t{connect(){super.connect()}updateChart(){super.updateChart()}describeDataForX(t){var e,a;const r=(null==t||null==(e=t.tooltip)?void 0:e.dataPoints[0]).dataIndex;this.dispatch("description-requested",{detail:{label:this.csvData[r][this.csvData.columns[1]],value:this.csvData[r][this.csvData.columns[2]],show:!(null==t||null==(a=t.tooltip)||!a.opacity)}})}parseCsvData(){this.csvData=a.csvParse(this.csvDataTarget.innerHTML.trim(),a.autoType)}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(this.chartjsOptionsTarget)}),t}get defaultOptions(){const t=this.cssPropertyValue("--axis-color");return{maintainAspectRatio:!1,animation:{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:i,delay:t=>"data"!==t.type||t.yStarted?0:(t.yStarted=!0,t.index*this.delayBetweenPoints)}},interaction:{mode:"index",intersect:!1},plugins:{legend:{display:!1},tooltip:{enabled:!1,position:"nearest",external:this.describeDataForX.bind(this)}},color:t,fill:!1,lineTension:.3,backgroundColor:"#fff",borderColor:this.cssPropertyValue("--line-color"),borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",pointBorderColor:this.cssPropertyValue("--point-stroke-color"),pointBackgroundColor:this.cssPropertyValue("--point-color"),pointBorderWidth:4,pointHoverRadius:10,pointHoverBackgroundColor:this.cssPropertyValue("--point-color"),pointHoverBorderColor:this.cssPropertyValue("--point-stroke-color-hover"),pointHoverBorderWidth:3,pointRadius:6,pointHitRadius:10,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}}}}}get delayBetweenPoints(){var t,e,a;return this.cssPropertyValue("--animation-duration")/(null==(t=this.chartjsData)||null==(e=t.datasets[0])||null==(a=e.data)?void 0:a.length)}}function i(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"};class l extends r{showDescriptionWith(t){var e,a,r;if(null==t||null==(e=t.detail)||!e.show)return this.hideContextualDescription(),void this.showOverallDescription();this.hideOverallDescription();const s=null==t||null==(a=t.detail)?void 0:a.value,o=null==t||null==(r=t.detail)?void 0:r.label;this.contextualDescriptionTarget.innerHTML=this.contextualDescriptionTemplateTarget.innerHTML.replaceAll("%value%",s).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)}}l.targets=["overallDescription","contextualDescription","contextualDescriptionTemplate"],l.classes=["hideOverallDescription","hideContextualDescription"];class n extends r{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 r{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 d=[[o,"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,o as SuperchartController,d 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/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 } 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 label: {\n type: String,\n default: \"Value\"\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 }\n \n connect() {\n super.connect()\n }\n \n updateChart() {\n super.updateChart()\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 const csv = d3.csvParse(this.csvDataTarget.innerHTML.trim(), d3.autoType)\n return {\n labels: csv.map(d => d[csv.columns[0]]),\n datasets: [{\n type: this.typeValue,\n label: this.labelValue,\n data: csv.map(d => d[csv.columns[1]])\n }]\n }\n }\n \n get chartjsOptions() {\n let options = {\n ...this.defaultOptions\n }\n \n if (this.hasChartjsOptionsTarget) {\n options = {\n ...options,\n ...JSON.parse(this.chartjsOptionsTarget.innerHTML.trim())\n }\n }\n \n return options\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: {\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 plugins: {\n legend: {\n display: false,\n }\n },\n color: axisColor,\n fill: false,\n lineTension: 0.3,\n backgroundColor: \"#fff\",\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 pointBorderWidth: 4,\n pointHoverRadius: 10,\n pointHoverBackgroundColor: this.cssPropertyValue('--point-color'),\n pointHoverBorderColor: this.cssPropertyValue('--point-stroke-color-hover'),\n pointHoverBorderWidth: 3,\n pointRadius: 6,\n pointHitRadius: 10,\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 }\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 = [ \"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 FilterableController from \"./supercharts/filterable_controller\"\nimport FiltersController from \"./supercharts/filters_controller\"\n\nexport const controllerDefinitions = [\n [SuperchartController, \"superchart_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 FilterableController,\n FiltersController,\n}\n"],"names":["identifierForContextKey","key","logicalName","match","replace","SuperchartChartjsController","connect","super","updateChart","chartjsData","this","hasChartJsDataTarget","hasCsvDataTarget","console","warn","csv","d3","csvParse","csvDataTarget","innerHTML","trim","autoType","labels","map","d","columns","datasets","type","typeValue","label","labelValue","data","options","defaultOptions","hasChartjsOptionsTarget","JSON","parse","chartjsOptionsTarget","cssPropertyValue","maintainAspectRatio","animation","x","easing","duration","delayBetweenPoints","from","NaN","delay","ctx","xStarted","index","y","previousY","yStarted","plugins","legend","display","color","axisColor","fill","lineTension","backgroundColor","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","pointBorderColor","pointBackgroundColor","pointBorderWidth","pointHoverRadius","pointHoverBackgroundColor","pointHoverBorderColor","pointHoverBorderWidth","pointRadius","pointHitRadius","spanGaps","scales","grid","tickColor","ticks","_this$chartjsData","_this$chartjsData$dat","_this$chartjsData$dat2","length","chart","getPixelForValue","getDatasetMeta","datasetIndex","getProps","targets","values","String","default","defaultCssProperties","Controller","event","chartSourceDataTarget","detail","dataElement","remove","chartTarget","dispatchEvent","CustomEvent","eventNameValue","eventName","_class","element","dataTarget","bubbles","cancelable","controllerDefinitions","SuperchartController","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 } 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 }\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[2]],\n show: !!event?.tooltip?.opacity\n } })\n }\n \n parseCsvData() {\n this.csvData = d3.csvParse(this.csvDataTarget.innerHTML.trim(), d3.autoType)\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 options\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: {\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 interaction: {\n mode: 'index',\n intersect: false,\n },\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 backgroundColor: \"#fff\",\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 pointBorderWidth: 4,\n pointHoverRadius: 10,\n pointHoverBackgroundColor: this.cssPropertyValue('--point-color'),\n pointHoverBorderColor: this.cssPropertyValue('--point-stroke-color-hover'),\n pointHoverBorderWidth: 3,\n pointRadius: 6,\n pointHitRadius: 10,\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 }\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","_event$tooltip","_event$tooltip2","dataIndex","tooltip","dataPoints","this","dispatch","detail","label","csvData","columns","value","show","opacity","parseCsvData","d3","csvParse","csvDataTarget","innerHTML","trim","autoType","hasChartJsDataTarget","chartjsData","hasCsvDataTarget","labels","map","d","datasets","type","typeValue","data","console","warn","options","defaultOptions","hasChartjsOptionsTarget","parseContentsAsJSON","chartjsOptionsTarget","axisColor","cssPropertyValue","maintainAspectRatio","animation","x","easing","duration","delayBetweenPoints","from","NaN","delay","ctx","xStarted","index","y","previousY","yStarted","interaction","mode","intersect","plugins","legend","display","enabled","position","external","bind","color","fill","lineTension","backgroundColor","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","pointBorderColor","pointBackgroundColor","pointBorderWidth","pointHoverRadius","pointHoverBackgroundColor","pointHoverBorderColor","pointHoverBorderWidth","pointRadius","pointHitRadius","spanGaps","scales","grid","tickColor","ticks","_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","_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("d3"),r=require("@hotwired/stimulus");function a(t){if(t&&t.__esModule)return t;var e=Object.create(null);return t&&Object.keys(t).forEach(function(r){if("default"!==r){var a=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,a.get?a:{enumerable:!0,get:function(){return t[r]}})}}),e.default=t,e}var
|
1
|
+
var t=require("@supercharts/stimulus-base"),e=require("d3"),r=require("@hotwired/stimulus");function a(t){if(t&&t.__esModule)return t;var e=Object.create(null);return t&&Object.keys(t).forEach(function(r){if("default"!==r){var a=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,a.get?a:{enumerable:!0,get:function(){return t[r]}})}}),e.default=t,e}var s=/*#__PURE__*/a(e);function o(t){const e=(t.match(/^(?:\.\/)?(.+)(?:[_-]controller\..+?)$/)||[])[1];if(e)return e.replace(/_/g,"-").replace(/\//g,"--")}class i extends t.SuperchartChartjsController{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[2]],show:!(null==t||null==(r=t.tooltip)||!r.opacity)}})}parseCsvData(){this.csvData=s.csvParse(this.csvDataTarget.innerHTML.trim(),s.autoType)}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)}),e}get defaultOptions(){const t=this.cssPropertyValue("--axis-color");return{maintainAspectRatio:!1,animation:{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)}},interaction:{mode:"index",intersect:!1},plugins:{legend:{display:!1},tooltip:{enabled:!1,position:"nearest",external:this.describeDataForX.bind(this)}},color:t,fill:!1,lineTension:.3,backgroundColor:"#fff",borderColor:this.cssPropertyValue("--line-color"),borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",pointBorderColor:this.cssPropertyValue("--point-stroke-color"),pointBackgroundColor:this.cssPropertyValue("--point-color"),pointBorderWidth:4,pointHoverRadius:10,pointHoverBackgroundColor:this.cssPropertyValue("--point-color"),pointHoverBorderColor:this.cssPropertyValue("--point-stroke-color-hover"),pointHoverBorderWidth:3,pointRadius:6,pointHitRadius:10,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}}}}}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}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"};class n extends r.Controller{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,o=null==t||null==(a=t.detail)?void 0:a.label;this.contextualDescriptionTarget.innerHTML=this.contextualDescriptionTemplateTarget.innerHTML.replaceAll("%value%",s).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)}}n.targets=["overallDescription","contextualDescription","contextualDescriptionTemplate"],n.classes=["hideOverallDescription","hideContextualDescription"];class c extends r.Controller{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 d extends r.Controller{connect(){this.element.dispatchEvent(new CustomEvent(this.eventNameValue,{detail:{dataElement:this.dataTarget},bubbles:!0,cancelable:!0}))}}d.targets=["data"],d.values={eventName:{type:String,default:"superchart:update-chart"}};const u=[[i,"superchart_controller.js"],[n,"supercharts/describable_controller.js"],[c,"supercharts/filterable_controller.js"],[d,"supercharts/filters_controller.js"]].map(function(t){const e=t[0];return{identifier:o(t[1]),controllerConstructor:e}});exports.DescribableController=n,exports.FilterableController=c,exports.FiltersController=d,exports.SuperchartController=i,exports.controllerDefinitions=u;
|
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/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 } 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 label: {\n type: String,\n default: \"Value\"\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 }\n \n connect() {\n super.connect()\n }\n \n updateChart() {\n super.updateChart()\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 const csv = d3.csvParse(this.csvDataTarget.innerHTML.trim(), d3.autoType)\n return {\n labels: csv.map(d => d[csv.columns[0]]),\n datasets: [{\n type: this.typeValue,\n label: this.labelValue,\n data: csv.map(d => d[csv.columns[1]])\n }]\n }\n }\n \n get chartjsOptions() {\n let options = {\n ...this.defaultOptions\n }\n \n if (this.hasChartjsOptionsTarget) {\n options = {\n ...options,\n ...JSON.parse(this.chartjsOptionsTarget.innerHTML.trim())\n }\n }\n \n return options\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: {\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 plugins: {\n legend: {\n display: false,\n }\n },\n color: axisColor,\n fill: false,\n lineTension: 0.3,\n backgroundColor: \"#fff\",\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 pointBorderWidth: 4,\n pointHoverRadius: 10,\n pointHoverBackgroundColor: this.cssPropertyValue('--point-color'),\n pointHoverBorderColor: this.cssPropertyValue('--point-stroke-color-hover'),\n pointHoverBorderWidth: 3,\n pointRadius: 6,\n pointHitRadius: 10,\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 }\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 = [ \"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 FilterableController from \"./supercharts/filterable_controller\"\nimport FiltersController from \"./supercharts/filters_controller\"\n\nexport const controllerDefinitions = [\n [SuperchartController, \"superchart_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 FilterableController,\n FiltersController,\n}\n"],"names":["identifierForContextKey","key","logicalName","match","replace","SuperchartChartjsController","connect","super","updateChart","chartjsData","this","hasChartJsDataTarget","hasCsvDataTarget","console","warn","csv","d3","csvParse","csvDataTarget","innerHTML","trim","autoType","labels","map","d","columns","datasets","type","typeValue","label","labelValue","data","options","defaultOptions","hasChartjsOptionsTarget","JSON","parse","chartjsOptionsTarget","cssPropertyValue","maintainAspectRatio","animation","x","easing","duration","delayBetweenPoints","from","NaN","delay","ctx","xStarted","index","y","previousY","yStarted","plugins","legend","display","color","axisColor","fill","lineTension","backgroundColor","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","pointBorderColor","pointBackgroundColor","pointBorderWidth","pointHoverRadius","pointHoverBackgroundColor","pointHoverBorderColor","pointHoverBorderWidth","pointRadius","pointHitRadius","spanGaps","scales","grid","tickColor","ticks","_this$chartjsData","_this$chartjsData$dat","_this$chartjsData$dat2","length","chart","getPixelForValue","getDatasetMeta","datasetIndex","getProps","targets","values","String","default","defaultCssProperties","Controller","event","chartSourceDataTarget","detail","dataElement","remove","chartTarget","dispatchEvent","CustomEvent","eventNameValue","eventName","_class","element","dataTarget","bubbles","cancelable","controllerDefinitions","SuperchartController","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 } 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 }\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[2]],\n show: !!event?.tooltip?.opacity\n } })\n }\n \n parseCsvData() {\n this.csvData = d3.csvParse(this.csvDataTarget.innerHTML.trim(), d3.autoType)\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 options\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: {\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 interaction: {\n mode: 'index',\n intersect: false,\n },\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 backgroundColor: \"#fff\",\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 pointBorderWidth: 4,\n pointHoverRadius: 10,\n pointHoverBackgroundColor: this.cssPropertyValue('--point-color'),\n pointHoverBorderColor: this.cssPropertyValue('--point-stroke-color-hover'),\n pointHoverBorderWidth: 3,\n pointRadius: 6,\n pointHitRadius: 10,\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 }\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","_event$tooltip","_event$tooltip2","dataIndex","tooltip","dataPoints","this","dispatch","detail","label","csvData","columns","value","show","opacity","parseCsvData","d3","csvParse","csvDataTarget","innerHTML","trim","autoType","hasChartJsDataTarget","chartjsData","hasCsvDataTarget","labels","map","d","datasets","type","typeValue","data","console","warn","options","defaultOptions","hasChartjsOptionsTarget","parseContentsAsJSON","chartjsOptionsTarget","axisColor","cssPropertyValue","maintainAspectRatio","animation","x","easing","duration","delayBetweenPoints","from","NaN","delay","ctx","xStarted","index","y","previousY","yStarted","interaction","mode","intersect","plugins","legend","display","enabled","position","external","bind","color","fill","lineTension","backgroundColor","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","pointBorderColor","pointBackgroundColor","pointBorderWidth","pointHoverRadius","pointHoverBackgroundColor","pointHoverBorderColor","pointHoverBorderWidth","pointRadius","pointHitRadius","spanGaps","scales","grid","tickColor","ticks","_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","_class","element","dataTarget","bubbles","cancelable","controllerDefinitions","SuperchartController","DescribableController","FilterableController","FiltersController","controller","identifier","controllerConstructor"],"mappings":"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"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
import{SuperchartChartjsController as t}from"@supercharts/stimulus-base";import*as
|
1
|
+
import{SuperchartChartjsController as t,parseContentsAsJSON as e}from"@supercharts/stimulus-base";import*as a from"d3";import{Controller as r}from"@hotwired/stimulus";function s(t){const e=(t.match(/^(?:\.\/)?(.+)(?:[_-]controller\..+?)$/)||[])[1];if(e)return e.replace(/_/g,"-").replace(/\//g,"--")}function o(){return o=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var a=arguments[e];for(var r in a)Object.prototype.hasOwnProperty.call(a,r)&&(t[r]=a[r])}return t},o.apply(this,arguments)}class i extends t{connect(){super.connect()}updateChart(){super.updateChart()}describeDataForX(t){var e,a;const r=(null==t||null==(e=t.tooltip)?void 0:e.dataPoints[0]).dataIndex;this.dispatch("description-requested",{detail:{label:this.csvData[r][this.csvData.columns[1]],value:this.csvData[r][this.csvData.columns[2]],show:!(null==t||null==(a=t.tooltip)||!a.opacity)}})}parseCsvData(){this.csvData=a.csvParse(this.csvDataTarget.innerHTML.trim(),a.autoType)}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=o({},this.defaultOptions);return this.hasChartjsOptionsTarget&&(t=o({},t,e(this.chartjsOptionsTarget))),t}get defaultOptions(){const t=this.cssPropertyValue("--axis-color");return{maintainAspectRatio:!1,animation:{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)}},interaction:{mode:"index",intersect:!1},plugins:{legend:{display:!1},tooltip:{enabled:!1,position:"nearest",external:this.describeDataForX.bind(this)}},color:t,fill:!1,lineTension:.3,backgroundColor:"#fff",borderColor:this.cssPropertyValue("--line-color"),borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",pointBorderColor:this.cssPropertyValue("--point-stroke-color"),pointBackgroundColor:this.cssPropertyValue("--point-color"),pointBorderWidth:4,pointHoverRadius:10,pointHoverBackgroundColor:this.cssPropertyValue("--point-color"),pointHoverBorderColor:this.cssPropertyValue("--point-stroke-color-hover"),pointHoverBorderWidth:3,pointRadius:6,pointHitRadius:10,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}}}}}get delayBetweenPoints(){var t,e,a;return this.cssPropertyValue("--animation-duration")/(null==(t=this.chartjsData)||null==(e=t.datasets[0])||null==(a=e.data)?void 0:a.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}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"};class n extends r{showDescriptionWith(t){var e,a,r;if(null==t||null==(e=t.detail)||!e.show)return this.hideContextualDescription(),void this.showOverallDescription();this.hideOverallDescription();const s=null==t||null==(a=t.detail)?void 0:a.value,o=null==t||null==(r=t.detail)?void 0:r.label;this.contextualDescriptionTarget.innerHTML=this.contextualDescriptionTemplateTarget.innerHTML.replaceAll("%value%",s).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)}}n.targets=["overallDescription","contextualDescription","contextualDescriptionTemplate"],n.classes=["hideOverallDescription","hideContextualDescription"];class c extends r{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 r{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=[[i,"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,i 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/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 } 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 label: {\n type: String,\n default: \"Value\"\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 }\n \n connect() {\n super.connect()\n }\n \n updateChart() {\n super.updateChart()\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 const csv = d3.csvParse(this.csvDataTarget.innerHTML.trim(), d3.autoType)\n return {\n labels: csv.map(d => d[csv.columns[0]]),\n datasets: [{\n type: this.typeValue,\n label: this.labelValue,\n data: csv.map(d => d[csv.columns[1]])\n }]\n }\n }\n \n get chartjsOptions() {\n let options = {\n ...this.defaultOptions\n }\n \n if (this.hasChartjsOptionsTarget) {\n options = {\n ...options,\n ...JSON.parse(this.chartjsOptionsTarget.innerHTML.trim())\n }\n }\n \n return options\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: {\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 plugins: {\n legend: {\n display: false,\n }\n },\n color: axisColor,\n fill: false,\n lineTension: 0.3,\n backgroundColor: \"#fff\",\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 pointBorderWidth: 4,\n pointHoverRadius: 10,\n pointHoverBackgroundColor: this.cssPropertyValue('--point-color'),\n pointHoverBorderColor: this.cssPropertyValue('--point-stroke-color-hover'),\n pointHoverBorderWidth: 3,\n pointRadius: 6,\n pointHitRadius: 10,\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 }\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 = [ \"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 FilterableController from \"./supercharts/filterable_controller\"\nimport FiltersController from \"./supercharts/filters_controller\"\n\nexport const controllerDefinitions = [\n [SuperchartController, \"superchart_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 FilterableController,\n FiltersController,\n}\n"],"names":["identifierForContextKey","key","logicalName","match","replace","SuperchartChartjsController","connect","super","updateChart","chartjsData","this","hasChartJsDataTarget","hasCsvDataTarget","console","warn","csv","d3","csvParse","csvDataTarget","innerHTML","trim","autoType","labels","map","d","columns","datasets","type","typeValue","label","labelValue","data","options","defaultOptions","hasChartjsOptionsTarget","JSON","parse","chartjsOptionsTarget","axisColor","cssPropertyValue","maintainAspectRatio","animation","x","easing","duration","delayBetweenPoints","from","NaN","delay","ctx","xStarted","index","y","previousY","yStarted","plugins","legend","display","color","fill","lineTension","backgroundColor","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","pointBorderColor","pointBackgroundColor","pointBorderWidth","pointHoverRadius","pointHoverBackgroundColor","pointHoverBorderColor","pointHoverBorderWidth","pointRadius","pointHitRadius","spanGaps","scales","grid","tickColor","ticks","_this$chartjsData","_this$chartjsData$dat","_this$chartjsData$dat2","length","chart","getPixelForValue","getDatasetMeta","datasetIndex","getProps","targets","values","String","default","defaultCssProperties","Controller","event","chartSourceDataTarget","detail","dataElement","remove","chartTarget","dispatchEvent","CustomEvent","eventNameValue","eventName","_class","element","dataTarget","bubbles","cancelable","controllerDefinitions","SuperchartController","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 } 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 }\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[2]],\n show: !!event?.tooltip?.opacity\n } })\n }\n \n parseCsvData() {\n this.csvData = d3.csvParse(this.csvDataTarget.innerHTML.trim(), d3.autoType)\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 options\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: {\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 interaction: {\n mode: 'index',\n intersect: false,\n },\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 backgroundColor: \"#fff\",\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 pointBorderWidth: 4,\n pointHoverRadius: 10,\n pointHoverBackgroundColor: this.cssPropertyValue('--point-color'),\n pointHoverBorderColor: this.cssPropertyValue('--point-stroke-color-hover'),\n pointHoverBorderWidth: 3,\n pointRadius: 6,\n pointHitRadius: 10,\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 }\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","_event$tooltip","_event$tooltip2","dataIndex","tooltip","dataPoints","this","dispatch","detail","label","csvData","columns","value","show","opacity","parseCsvData","d3","csvParse","csvDataTarget","innerHTML","trim","autoType","chartjsData","hasChartJsDataTarget","hasCsvDataTarget","labels","map","d","datasets","type","typeValue","data","console","warn","chartjsOptions","options","_extends","defaultOptions","hasChartjsOptionsTarget","parseContentsAsJSON","chartjsOptionsTarget","axisColor","cssPropertyValue","maintainAspectRatio","animation","x","easing","duration","delayBetweenPoints","from","NaN","delay","ctx","xStarted","index","y","previousY","yStarted","interaction","mode","intersect","plugins","legend","display","enabled","position","external","bind","color","fill","lineTension","backgroundColor","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","pointBorderColor","pointBackgroundColor","pointBorderWidth","pointHoverRadius","pointHoverBackgroundColor","pointHoverBorderColor","pointHoverBorderWidth","pointRadius","pointHitRadius","spanGaps","scales","grid","tickColor","ticks","_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","_class","element","dataTarget","bubbles","cancelable","controllerDefinitions","SuperchartController","DescribableController","FilterableController","FiltersController","controller","identifier","controllerConstructor"],"mappings":"uKAqBA,SAASA,EAAwBC,GAC7B,MAAMC,GAAeD,EAAIE,MAAM,2CAA6C,IAAI,GAChF,GAAID,EACA,OAAOA,EAAYE,QAAQ,KAAM,KAAKA,QAAQ,MAAO,KAE7D,qOCvB6BC,MAAAA,UAAAA,EAmB3BC,UACEC,MAAMD,SACP,CAEDE,cACED,MAAMC,aACP,CAEDC,iBAAiBC,GAAO,IAAAC,EAAAC,EACtB,MACMC,GADQH,MAAAA,GAAH,OAAGA,EAAAA,EAAOI,cAAPJ,EAAAC,EAAgBI,WAAW,IACjBF,UACxBG,KAAKC,SAAS,wBAAyB,CAAEC,OAAQ,CAC/CC,MAAOH,KAAKI,QAAQP,GAAWG,KAAKI,QAAQC,QAAQ,IACpDC,MAAON,KAAKI,QAAQP,GAAWG,KAAKI,QAAQC,QAAQ,IACpDE,OAAQb,MAAAA,GAAD,OAACA,EAAAA,EAAOI,WAAPF,EAAgBY,WAE3B,CAEDC,eACET,KAAKI,QAAUM,EAAGC,SAASX,KAAKY,cAAcC,UAAUC,OAAQJ,EAAGK,SACpE,CAEGC,kBACF,OAAIhB,KAAKiB,qBACA1B,MAAMyB,cAEVhB,KAAKkB,kBAKVlB,KAAKS,eAEE,CACLU,OAAQnB,KAAKI,QAAQgB,IAAIC,GAAKA,EAAErB,KAAKI,QAAQC,QAAQ,KACrDiB,SAAU,CAAC,CACTC,KAAMvB,KAAKwB,UACXrB,MAAO,QACPsB,KAAMzB,KAAKI,QAAQgB,IAAIC,GAAKA,EAAErB,KAAKI,QAAQC,QAAQ,UAXrDqB,QAAQC,KAAM,2FACP,GAaV,CAEGC,qBACF,IAAWC,EAAAC,EAAA,CAAA,EACN9B,KAAK+B,gBAUV,OAPI/B,KAAKgC,0BACPH,EACKA,EAAAA,GAAAA,EACAI,EAAoBjC,KAAKkC,yBAKjC,sBAIC,MAAeC,EAAGnC,KAAKoC,iBAAiB,gBACxC,MAAO,CACLC,qBAAqB,EACrBC,UAAW,CACTC,EAAG,CACDhB,KAAM,SACNiB,OAAQ,SACRC,SAAUzC,KAAK0C,mBACfC,KAAMC,IACNC,MAAQC,GACW,SAAbA,EAAIvB,MAAmBuB,EAAIC,YAG/BD,EAAIC,UAAW,EACLD,EAACE,MAAQhD,KAAK0C,qBAG5BO,EAAG,CACD1B,KAAM,SACNiB,OAAQ,SACRC,SAAUzC,KAAK0C,mBACfC,KAAMO,EACNL,MAAQC,GACW,SAAbA,EAAIvB,MAAmBuB,EAAIK,SAE9B,GACDL,EAAIK,UAAW,EACLL,EAACE,MAAQhD,KAAK0C,sBAI9BU,YAAa,CACXC,KAAM,QACNC,WAAW,GAEbC,QAAS,CACPC,OAAQ,CACNC,SAAS,GAEX3D,QAAS,CACP4D,SAAS,EACTC,SAAU,UACVC,SAAU5D,KAAKP,iBAAiBoE,KAAK7D,QAGzC8D,MAAO3B,EACP4B,MAAM,EACNC,YAAa,GACbC,gBAAiB,OACjBC,YAAalE,KAAKoC,iBAAiB,gBACnC+B,eAAgB,OAChBC,WAAY,GACZC,iBAAkB,EAClBC,gBAAiB,QACjBC,iBAAkBvE,KAAKoC,iBAAiB,wBACxCoC,qBAAsBxE,KAAKoC,iBAAiB,iBAC5CqC,iBAAkB,EAClBC,iBAAkB,GAClBC,0BAA2B3E,KAAKoC,iBAAiB,iBACjDwC,sBAAuB5E,KAAKoC,iBAAiB,8BAC7CyC,sBAAuB,EACvBC,YAAa,EACbC,eAAgB,GAChBC,UAAU,EACVC,OAAQ,CACN1C,EAAG,CACD2C,KAAM,CACJpB,MAAO9D,KAAKoC,iBAAiB,gBAC7B8B,YAAa/B,EACbgD,UAAWhD,GAEbiD,MAAO,CACLtB,MAAO3B,EACPgD,UAAWhD,IAGfc,EAAG,CACDiC,KAAM,CACJpB,MAAO9D,KAAKoC,iBAAiB,gBAC7B8B,YAAa/B,EACbgD,UAAWhD,GAEbiD,MAAO,CACLtB,MAAO3B,EACPgD,UAAWhD,KAKpB,CAEGO,yBACF,IAAA2C,EAAAC,EAAAC,EAAA,YAAYnD,iBAAiB,yBAA0B,OAAAiD,EAAArF,KAAKgB,cAAL,OAAAsE,EAAAD,EAAkB/D,SAAS,KAA3B,OAAAiE,EAAAD,EAA+B7D,WAA/B,EAAA8D,EAAqCC,OAC7F,EAGH,WAAoB1C,GAClB,OAAqB,IAAXA,EAACE,MAAcF,EAAI2C,MAAMR,OAAOhC,EAAEyC,iBAAiB,KAAO5C,EAAI2C,MAAME,eAAe7C,EAAI8C,cAAcnE,KAAKqB,EAAIE,MAAQ,GAAG6C,SAAS,CAAC,MAAM,GAAM5C,CAC1J,GAhLQ6C,QAAU,CAAE,iBAAkB,cAAe,gBAAiB,WAC9DC,EAAAA,OAAS,CACdxE,KAAM,CACJA,KAAMyE,OACNC,QAAS,WAINC,qBAAuB,CAC5B,uBAAwB,IACxB,eAAgB,OAChB,eAAgB,OAChB,eAAgB,OAChB,gBAAiB,OACjB,uBAAwB,OACxB,6BAA8B,wBCjBMC,EAItCC,oBAAoB1G,GAAO,IAAA2G,EAAAC,EAAAC,EACzB,SAAK7G,GAAD,SAACA,EAAOQ,UAAPmG,EAAe9F,KAGlB,OAFAP,KAAKwG,iCACLxG,KAAKyG,yBAIPzG,KAAK0G,yBACL,QAAchH,MAAAA,GAAH,OAAGA,EAAAA,EAAOQ,aAAPR,EAAA4G,EAAehG,MAClBH,EAAA,MAAGT,UAAH6G,EAAG7G,EAAOQ,aAAV,EAAGqG,EAAepG,MAE7BH,KAAK2G,4BAA4B9F,UADnBb,KAAK4G,oCAAoC/F,UAEpDgG,WAAW,UAAWvG,GACtBuG,WAAW,UAAW1G,GACzBH,KAAK8G,2BACN,CAEDJ,yBACE1G,KAAK+G,yBAAyBC,UAAUC,OAAOjH,KAAKkH,8BACrD,CAEDT,yBACEzG,KAAK+G,yBAAyBC,UAAUG,UAAUnH,KAAKkH,8BACxD,CAEDV,4BACExG,KAAK2G,4BAA4BK,UAAUC,OAAOjH,KAAKoH,iCACxD,CAEDN,4BACE9G,KAAK2G,4BAA4BK,UAAUG,UAAUnH,KAAKoH,iCAC3D,IAlCMtB,QAAU,CAAE,qBAAsB,wBAAyB,mCAC3DuB,QAAU,CAAE,yBAA0B,6BCFlBlB,MAAAA,UAAAA,EAS3B3G,YAAYE,GACVM,KAAKsH,sBAAsBzG,UAAYnB,EAAMQ,OAAOqH,YAAY1G,UAChEnB,EAAMQ,OAAOqH,YAAYJ,SACzBnH,KAAKwH,YAAYC,cAAc,IAAIC,YAAY1H,KAAK2H,gBACrD,IAZM7B,QAAU,CAAE,kBAAmB,SAC/BC,EAAAA,OAAS,CACd6B,UAAW,CACTrG,KAAMyE,OACNC,QAAS,iBCLA,MAAA4B,UAAyB1B,EAStC7G,UACEU,KAAK8H,QAAQL,cACX,IAAAC,YAAgB1H,KAAK2H,eAAgB,CACnCzH,OAAQ,CAAEqH,YAAavH,KAAK+H,YAC5BC,SAAS,EACTC,YAAY,IAGjB,IAhBMnC,QAAU,CAAE,UACZC,OAAS,CACd6B,UAAW,CACTrG,KAAMyE,OACNC,QAAS,4BCAFiC,QAAwB,CACnC,CAACC,EAAsB,4BACvB,CAACC,EAAuB,yCACxB,CAACC,EAAsB,wCACvB,CAACC,EAAmB,sCACpBlH,IAAI,SAASC,GACb,MACgBkH,EAAGlH,EAAE,GACrB,MAAO,CACLmH,WAAYxJ,EAHFqC,EAAE,IAIZoH,sBAAuBF,EAE1B"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@supercharts/stimulus-base"),require("d3"),require("@hotwired/stimulus")):"function"==typeof define&&define.amd?define(["exports","@supercharts/stimulus-base","d3","@hotwired/stimulus"],e):e((t||self).superchartsBulletTrain={},t.stimulusBase,t.d3,t.stimulus)}(this,function(t,e,r,a){function
|
1
|
+
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@supercharts/stimulus-base"),require("d3"),require("@hotwired/stimulus")):"function"==typeof define&&define.amd?define(["exports","@supercharts/stimulus-base","d3","@hotwired/stimulus"],e):e((t||self).superchartsBulletTrain={},t.stimulusBase,t.d3,t.stimulus)}(this,function(t,e,r,a){function s(t){if(t&&t.__esModule)return t;var e=Object.create(null);return t&&Object.keys(t).forEach(function(r){if("default"!==r){var a=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,a.get?a:{enumerable:!0,get:function(){return t[r]}})}}),e.default=t,e}var o=/*#__PURE__*/s(r);function i(t){const e=(t.match(/^(?:\.\/)?(.+)(?:[_-]controller\..+?)$/)||[])[1];if(e)return e.replace(/_/g,"-").replace(/\//g,"--")}class l extends e.SuperchartChartjsController{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[2]],show:!(null==t||null==(r=t.tooltip)||!r.opacity)}})}parseCsvData(){this.csvData=o.csvParse(this.csvDataTarget.innerHTML.trim(),o.autoType)}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)}),t}get defaultOptions(){const t=this.cssPropertyValue("--axis-color");return{maintainAspectRatio:!1,animation:{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:n,delay:t=>"data"!==t.type||t.yStarted?0:(t.yStarted=!0,t.index*this.delayBetweenPoints)}},interaction:{mode:"index",intersect:!1},plugins:{legend:{display:!1},tooltip:{enabled:!1,position:"nearest",external:this.describeDataForX.bind(this)}},color:t,fill:!1,lineTension:.3,backgroundColor:"#fff",borderColor:this.cssPropertyValue("--line-color"),borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",pointBorderColor:this.cssPropertyValue("--point-stroke-color"),pointBackgroundColor:this.cssPropertyValue("--point-color"),pointBorderWidth:4,pointHoverRadius:10,pointHoverBackgroundColor:this.cssPropertyValue("--point-color"),pointHoverBorderColor:this.cssPropertyValue("--point-stroke-color-hover"),pointHoverBorderWidth:3,pointRadius:6,pointHitRadius:10,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}}}}}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 n(t){return 0===t.index?t.chart.scales.y.getPixelForValue(100):t.chart.getDatasetMeta(t.datasetIndex).data[t.index-1].getProps(["y"],!0).y}l.targets=["chartjsOptions","chartjsData","chartjsCanvas","csvData"],l.values={type:{type:String,default:"line"}},l.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"};class c extends a.Controller{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,o=null==t||null==(a=t.detail)?void 0:a.label;this.contextualDescriptionTarget.innerHTML=this.contextualDescriptionTemplateTarget.innerHTML.replaceAll("%value%",s).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)}}c.targets=["overallDescription","contextualDescription","contextualDescriptionTemplate"],c.classes=["hideOverallDescription","hideContextualDescription"];class u extends a.Controller{updateChart(t){this.chartSourceDataTarget.innerHTML=t.detail.dataElement.innerHTML,t.detail.dataElement.remove(),this.chartTarget.dispatchEvent(new CustomEvent(this.eventNameValue))}}u.targets=["chartSourceData","chart"],u.values={eventName:{type:String,default:"update-chart"}};class d extends a.Controller{connect(){this.element.dispatchEvent(new CustomEvent(this.eventNameValue,{detail:{dataElement:this.dataTarget},bubbles:!0,cancelable:!0}))}}d.targets=["data"],d.values={eventName:{type:String,default:"superchart:update-chart"}};const h=[[l,"superchart_controller.js"],[c,"supercharts/describable_controller.js"],[u,"supercharts/filterable_controller.js"],[d,"supercharts/filters_controller.js"]].map(function(t){const e=t[0];return{identifier:i(t[1]),controllerConstructor:e}});t.DescribableController=c,t.FilterableController=u,t.FiltersController=d,t.SuperchartController=l,t.controllerDefinitions=h});
|
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/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 } 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 label: {\n type: String,\n default: \"Value\"\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 }\n \n connect() {\n super.connect()\n }\n \n updateChart() {\n super.updateChart()\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 const csv = d3.csvParse(this.csvDataTarget.innerHTML.trim(), d3.autoType)\n return {\n labels: csv.map(d => d[csv.columns[0]]),\n datasets: [{\n type: this.typeValue,\n label: this.labelValue,\n data: csv.map(d => d[csv.columns[1]])\n }]\n }\n }\n \n get chartjsOptions() {\n let options = {\n ...this.defaultOptions\n }\n \n if (this.hasChartjsOptionsTarget) {\n options = {\n ...options,\n ...JSON.parse(this.chartjsOptionsTarget.innerHTML.trim())\n }\n }\n \n return options\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: {\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 plugins: {\n legend: {\n display: false,\n }\n },\n color: axisColor,\n fill: false,\n lineTension: 0.3,\n backgroundColor: \"#fff\",\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 pointBorderWidth: 4,\n pointHoverRadius: 10,\n pointHoverBackgroundColor: this.cssPropertyValue('--point-color'),\n pointHoverBorderColor: this.cssPropertyValue('--point-stroke-color-hover'),\n pointHoverBorderWidth: 3,\n pointRadius: 6,\n pointHitRadius: 10,\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 }\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 = [ \"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 FilterableController from \"./supercharts/filterable_controller\"\nimport FiltersController from \"./supercharts/filters_controller\"\n\nexport const controllerDefinitions = [\n [SuperchartController, \"superchart_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 FilterableController,\n FiltersController,\n}\n"],"names":["identifierForContextKey","key","logicalName","match","replace","SuperchartChartjsController","connect","super","updateChart","chartjsData","this","hasChartJsDataTarget","hasCsvDataTarget","console","warn","csv","d3","csvParse","csvDataTarget","innerHTML","trim","autoType","labels","map","d","columns","datasets","type","typeValue","label","labelValue","data","options","defaultOptions","hasChartjsOptionsTarget","JSON","parse","chartjsOptionsTarget","cssPropertyValue","maintainAspectRatio","animation","x","easing","duration","delayBetweenPoints","from","NaN","delay","ctx","xStarted","index","y","previousY","yStarted","plugins","legend","display","color","axisColor","fill","lineTension","backgroundColor","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","pointBorderColor","pointBackgroundColor","pointBorderWidth","pointHoverRadius","pointHoverBackgroundColor","pointHoverBorderColor","pointHoverBorderWidth","pointRadius","pointHitRadius","spanGaps","scales","grid","tickColor","ticks","_this$chartjsData","_this$chartjsData$dat","_this$chartjsData$dat2","length","chart","getPixelForValue","getDatasetMeta","datasetIndex","getProps","targets","values","String","default","defaultCssProperties","Controller","event","chartSourceDataTarget","detail","dataElement","remove","chartTarget","dispatchEvent","CustomEvent","eventNameValue","eventName","_class","element","dataTarget","bubbles","cancelable","controllerDefinitions","SuperchartController","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 } 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 }\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[2]],\n show: !!event?.tooltip?.opacity\n } })\n }\n \n parseCsvData() {\n this.csvData = d3.csvParse(this.csvDataTarget.innerHTML.trim(), d3.autoType)\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 options\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: {\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 interaction: {\n mode: 'index',\n intersect: false,\n },\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 backgroundColor: \"#fff\",\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 pointBorderWidth: 4,\n pointHoverRadius: 10,\n pointHoverBackgroundColor: this.cssPropertyValue('--point-color'),\n pointHoverBorderColor: this.cssPropertyValue('--point-stroke-color-hover'),\n pointHoverBorderWidth: 3,\n pointRadius: 6,\n pointHitRadius: 10,\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 }\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","_event$tooltip","_event$tooltip2","dataIndex","tooltip","dataPoints","this","dispatch","detail","label","csvData","columns","value","show","opacity","parseCsvData","d3","csvParse","csvDataTarget","innerHTML","trim","autoType","hasChartJsDataTarget","chartjsData","hasCsvDataTarget","labels","map","d","datasets","type","typeValue","data","console","warn","options","defaultOptions","hasChartjsOptionsTarget","parseContentsAsJSON","chartjsOptionsTarget","axisColor","cssPropertyValue","maintainAspectRatio","animation","x","easing","duration","delayBetweenPoints","from","NaN","delay","ctx","xStarted","index","y","previousY","yStarted","interaction","mode","intersect","plugins","legend","display","enabled","position","external","bind","color","fill","lineTension","backgroundColor","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","pointBorderColor","pointBackgroundColor","pointBorderWidth","pointHoverRadius","pointHoverBackgroundColor","pointHoverBorderColor","pointHoverBorderWidth","pointRadius","pointHitRadius","spanGaps","scales","grid","tickColor","ticks","_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","_class","element","dataTarget","bubbles","cancelable","controllerDefinitions","SuperchartController","DescribableController","FilterableController","FiltersController","controller","identifier","controllerConstructor"],"mappings":"osBAqBA,SAASA,EAAwBC,GAC7B,MAAMC,GAAeD,EAAIE,MAAM,2CAA6C,IAAI,GAChF,GAAID,EACA,OAAOA,EAAYE,QAAQ,KAAM,KAAKA,QAAQ,MAAO,KAE7D,CCvB6BC,MAAAA,UAAAA,EAA4BA,4BAmBvDC,UACEC,MAAMD,SACP,CAEDE,cACED,MAAMC,aACP,CAEDC,iBAAiBC,GACf,IAAAC,EAAAC,EAAA,MACeC,SADDH,GAAA,SAAAA,EAAOI,gBAAPH,EAAgBI,WAAW,IACjBF,UACxBG,KAAKC,SAAS,wBAAyB,CAAEC,OAAQ,CAC/CC,MAAOH,KAAKI,QAAQP,GAAWG,KAAKI,QAAQC,QAAQ,IACpDC,MAAON,KAAKI,QAAQP,GAAWG,KAAKI,QAAQC,QAAQ,IACpDE,aAAQb,GAAA,SAAAA,EAAOI,WAAPF,EAAgBY,WAE3B,CAEDC,eACET,KAAKI,QAAUM,EAAGC,SAASX,KAAKY,cAAcC,UAAUC,OAAQJ,EAAGK,SACpE,mBAGC,OAAIf,KAAKgB,2BACMC,cAEVjB,KAAKkB,kBAKVlB,KAAKS,eAEE,CACLU,OAAQnB,KAAKI,QAAQgB,IAAIC,GAAKA,EAAErB,KAAKI,QAAQC,QAAQ,KACrDiB,SAAU,CAAC,CACTC,KAAMvB,KAAKwB,UACXrB,MAAO,QACPsB,KAAMzB,KAAKI,QAAQgB,IAAIC,GAAKA,EAAErB,KAAKI,QAAQC,QAAQ,UAXrDqB,QAAQC,KAAM,2FACP,GAaV,sBAGC,IAAIC,EAAU,IACT5B,KAAK6B,gBAUV,OAPI7B,KAAK8B,0BACPF,EAAU,IACLA,KACAG,EAAAA,oBAAoB/B,KAAKgC,yBAKjC,sBAIC,MAAeC,EAAGjC,KAAKkC,iBAAiB,gBACxC,MAAO,CACLC,qBAAqB,EACrBC,UAAW,CACTC,EAAG,CACDd,KAAM,SACNe,OAAQ,SACRC,SAAUvC,KAAKwC,mBACfC,KAAMC,IACNC,MAAQC,GACW,SAAbA,EAAIrB,MAAmBqB,EAAIC,YAG/BD,EAAIC,UAAW,IACJC,MAAQ9C,KAAKwC,qBAG5BO,EAAG,CACDxB,KAAM,SACNe,OAAQ,SACRC,SAAUvC,KAAKwC,mBACfC,KAAMO,EACNL,MAAQC,GACW,SAAbA,EAAIrB,MAAmBqB,EAAIK,YAG/BL,EAAIK,UAAW,IACJH,MAAQ9C,KAAKwC,sBAI9BU,YAAa,CACXC,KAAM,QACNC,WAAW,GAEbC,QAAS,CACPC,OAAQ,CACNC,SAAS,GAEXzD,QAAS,CACP0D,SAAS,EACTC,SAAU,UACVC,SAAU1D,KAAKP,iBAAiBkE,KAAK3D,QAGzC4D,MAAO3B,EACP4B,MAAM,EACNC,YAAa,GACbC,gBAAiB,OACjBC,YAAahE,KAAKkC,iBAAiB,gBACnC+B,eAAgB,OAChBC,WAAY,GACZC,iBAAkB,EAClBC,gBAAiB,QACjBC,iBAAkBrE,KAAKkC,iBAAiB,wBACxCoC,qBAAsBtE,KAAKkC,iBAAiB,iBAC5CqC,iBAAkB,EAClBC,iBAAkB,GAClBC,0BAA2BzE,KAAKkC,iBAAiB,iBACjDwC,sBAAuB1E,KAAKkC,iBAAiB,8BAC7CyC,sBAAuB,EACvBC,YAAa,EACbC,eAAgB,GAChBC,UAAU,EACVC,OAAQ,CACN1C,EAAG,CACD2C,KAAM,CACJpB,MAAO5D,KAAKkC,iBAAiB,gBAC7B8B,YAAa/B,EACbgD,UAAWhD,GAEbiD,MAAO,CACLtB,MAAO3B,EACPgD,UAAWhD,IAGfc,EAAG,CACDiC,KAAM,CACJpB,MAAO5D,KAAKkC,iBAAiB,gBAC7B8B,YAAa/B,EACbgD,UAAWhD,GAEbiD,MAAO,CACLtB,MAAO3B,EACPgD,UAAWhD,KAKpB,0BAEwB,IAAAkD,EAAAC,EAAAC,EACvB,OAAYnD,KAAAA,iBAAiB,yBAAtB,OAAAiD,EAAgDnF,KAAKiB,cAArD,OAAAmE,EAAgDD,EAAkB7D,SAAS,KAA3E,OAAA+D,EAAgDD,EAA+B3D,WAA/E,EAAgD4D,EAAqCC,OAC7F,EAGH,SAAAtC,EAAoBJ,GAClB,OAAqB,IAAXA,EAACE,MAAcF,EAAI2C,MAAMR,OAAOhC,EAAEyC,iBAAiB,KAAO5C,EAAI2C,MAAME,eAAe7C,EAAI8C,cAAcjE,KAAKmB,EAAIE,MAAQ,GAAG6C,SAAS,CAAC,MAAM,GAAM5C,CAC1J,GAhLQ6C,QAAU,CAAE,iBAAkB,cAAe,gBAAiB,aAC9DC,OAAS,CACdtE,KAAM,CACJA,KAAMuE,OACNC,QAAS,SAINC,EAAAA,qBAAuB,CAC5B,uBAAwB,IACxB,eAAgB,OAChB,eAAgB,OAChB,eAAgB,OAChB,gBAAiB,OACjB,uBAAwB,OACxB,6BAA8B,wBCjBMC,EAAAA,WAItCC,oBAAoBxG,GAAO,IAAAyG,EAAAC,EAAAC,EACzB,SAAK3G,GAAD,SAACA,EAAOQ,UAAPiG,EAAe5F,KAGlB,OAFAP,KAAKsG,iCACLtG,KAAKuG,yBAIPvG,KAAKwG,yBACL,QAAc9G,MAAAA,GAAH,OAAGA,EAAAA,EAAOQ,aAAPR,EAAA0G,EAAe9F,MAClBH,EAAA,MAAGT,UAAH2G,EAAG3G,EAAOQ,aAAV,EAAGmG,EAAelG,MAE7BH,KAAKyG,4BAA4B5F,UADnBb,KAAK0G,oCAAoC7F,UAEpD8F,WAAW,UAAWrG,GACtBqG,WAAW,UAAWxG,GACzBH,KAAK4G,2BACN,CAEDJ,yBACExG,KAAK6G,yBAAyBC,UAAUC,OAAO/G,KAAKgH,8BACrD,CAEDT,yBACEvG,KAAK6G,yBAAyBC,UAAUG,UAAUjH,KAAKgH,8BACxD,CAEDV,4BACEtG,KAAKyG,4BAA4BK,UAAUC,OAAO/G,KAAKkH,iCACxD,CAEDN,4BACE5G,KAAKyG,4BAA4BK,UAAUG,UAAUjH,KAAKkH,iCAC3D,IAlCMtB,QAAU,CAAE,qBAAsB,wBAAyB,mCAC3DuB,QAAU,CAAE,yBAA0B,6BCFlBlB,MAAAA,UAAAA,EAAWA,WAStCzG,YAAYE,GACVM,KAAKoH,sBAAsBvG,UAAYnB,EAAMQ,OAAOmH,YAAYxG,UAChEnB,EAAMQ,OAAOmH,YAAYJ,SACzBjH,KAAKsH,YAAYC,cAAc,IAAIC,YAAYxH,KAAKyH,gBACrD,IAZM7B,QAAU,CAAE,kBAAmB,SAC/BC,EAAAA,OAAS,CACd6B,UAAW,CACTnG,KAAMuE,OACNC,QAAS,iBCLA,MAAA4B,UAAyB1B,EAAAA,WAStC3G,UACEU,KAAK4H,QAAQL,cACX,IAAAC,YAAgBxH,KAAKyH,eAAgB,CACnCvH,OAAQ,CAAEmH,YAAarH,KAAK6H,YAC5BC,SAAS,EACTC,YAAY,IAGjB,IAhBMnC,QAAU,CAAE,UACZC,OAAS,CACd6B,UAAW,CACTnG,KAAMuE,OACNC,QAAS,4BCAFiC,QAAwB,CACnC,CAACC,EAAsB,4BACvB,CAACC,EAAuB,yCACxB,CAACC,EAAsB,wCACvB,CAACC,EAAmB,sCACpBhH,IAAI,SAASC,GACb,MACgBgH,EAAGhH,EAAE,GACrB,MAAO,CACLiH,WAAYtJ,EAHFqC,EAAE,IAIZkH,sBAAuBF,EAE1B"}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'csv'
|
2
2
|
|
3
3
|
class Account::Scaffolding::CompletelyConcrete::TangibleThings::TangibleThingsChartController < Account::ApplicationController
|
4
|
+
include ActionView::Helpers::NumberHelper
|
4
5
|
account_load_and_authorize_resource :tangible_thing, through: :absolutely_abstract_creative_concept, through_association: :completely_concrete_tangible_things, collection_actions: [:show]
|
5
6
|
|
6
7
|
# GET /account/scaffolding/absolutely_abstract/creative_concepts/:absolutely_abstract_creative_concept_id/completely_concrete/tangible_things/chart
|
@@ -27,7 +28,7 @@ class Account::Scaffolding::CompletelyConcrete::TangibleThings::TangibleThingsCh
|
|
27
28
|
|
28
29
|
@total = data.values.reduce(:+)
|
29
30
|
|
30
|
-
|
31
|
+
date_format_abbr = if @period == :day
|
31
32
|
"%e"
|
32
33
|
elsif @period == :week
|
33
34
|
"%b %e"
|
@@ -35,9 +36,17 @@ class Account::Scaffolding::CompletelyConcrete::TangibleThings::TangibleThingsCh
|
|
35
36
|
"%b"
|
36
37
|
end
|
37
38
|
|
38
|
-
|
39
|
+
date_format_full = if @period == :day
|
40
|
+
"%B %e"
|
41
|
+
elsif @period == :week
|
42
|
+
"%B %e"
|
43
|
+
elsif @period == :month
|
44
|
+
"%B, %Y"
|
45
|
+
end
|
46
|
+
|
47
|
+
@csv = CSV.generate(" ", headers: %w[date_abbr date_full value value_formatted], write_headers: true, encoding: "UTF-8") do |csv|
|
39
48
|
data.each do |date, value|
|
40
|
-
csv.add_row [date.strftime(
|
49
|
+
csv.add_row [date.strftime(date_format_abbr), date.strftime(date_format_full), value, number_with_delimiter(value)]
|
41
50
|
end
|
42
51
|
end
|
43
52
|
end
|
@@ -1,11 +1,13 @@
|
|
1
1
|
import { identifierForContextKey } from "@hotwired/stimulus-webpack-helpers"
|
2
2
|
|
3
3
|
import SuperchartController from "./superchart_controller"
|
4
|
+
import DescribableController from "./supercharts/describable_controller"
|
4
5
|
import FilterableController from "./supercharts/filterable_controller"
|
5
6
|
import FiltersController from "./supercharts/filters_controller"
|
6
7
|
|
7
8
|
export const controllerDefinitions = [
|
8
9
|
[SuperchartController, "superchart_controller.js"],
|
10
|
+
[DescribableController, "supercharts/describable_controller.js"],
|
9
11
|
[FilterableController, "supercharts/filterable_controller.js"],
|
10
12
|
[FiltersController, "supercharts/filters_controller.js"],
|
11
13
|
].map(function(d) {
|
@@ -19,6 +21,7 @@ export const controllerDefinitions = [
|
|
19
21
|
|
20
22
|
export {
|
21
23
|
SuperchartController,
|
24
|
+
DescribableController,
|
22
25
|
FilterableController,
|
23
26
|
FiltersController,
|
24
27
|
}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { SuperchartChartjsController } from '@supercharts/stimulus-base'
|
1
|
+
import { SuperchartChartjsController, parseContentsAsJSON } from '@supercharts/stimulus-base'
|
2
2
|
import * as d3 from "d3"
|
3
3
|
|
4
4
|
export default class extends SuperchartChartjsController {
|
@@ -7,10 +7,6 @@ export default class extends SuperchartChartjsController {
|
|
7
7
|
type: {
|
8
8
|
type: String,
|
9
9
|
default: "line"
|
10
|
-
},
|
11
|
-
label: {
|
12
|
-
type: String,
|
13
|
-
default: "Value"
|
14
10
|
}
|
15
11
|
}
|
16
12
|
|
@@ -32,6 +28,20 @@ export default class extends SuperchartChartjsController {
|
|
32
28
|
super.updateChart()
|
33
29
|
}
|
34
30
|
|
31
|
+
describeDataForX(event) {
|
32
|
+
const point = event?.tooltip?.dataPoints[0]
|
33
|
+
const dataIndex = point.dataIndex
|
34
|
+
this.dispatch("description-requested", { detail: {
|
35
|
+
label: this.csvData[dataIndex][this.csvData.columns[1]],
|
36
|
+
value: this.csvData[dataIndex][this.csvData.columns[2]],
|
37
|
+
show: !!event?.tooltip?.opacity
|
38
|
+
} })
|
39
|
+
}
|
40
|
+
|
41
|
+
parseCsvData() {
|
42
|
+
this.csvData = d3.csvParse(this.csvDataTarget.innerHTML.trim(), d3.autoType)
|
43
|
+
}
|
44
|
+
|
35
45
|
get chartjsData() {
|
36
46
|
if (this.hasChartJsDataTarget) {
|
37
47
|
return super.chartjsData()
|
@@ -41,13 +51,14 @@ export default class extends SuperchartChartjsController {
|
|
41
51
|
return []
|
42
52
|
}
|
43
53
|
|
44
|
-
|
54
|
+
this.parseCsvData()
|
55
|
+
|
45
56
|
return {
|
46
|
-
labels:
|
57
|
+
labels: this.csvData.map(d => d[this.csvData.columns[0]]),
|
47
58
|
datasets: [{
|
48
59
|
type: this.typeValue,
|
49
|
-
label:
|
50
|
-
data:
|
60
|
+
label: "Value",
|
61
|
+
data: this.csvData.map(d => d[this.csvData.columns[2]])
|
51
62
|
}]
|
52
63
|
}
|
53
64
|
}
|
@@ -60,7 +71,7 @@ export default class extends SuperchartChartjsController {
|
|
60
71
|
if (this.hasChartjsOptionsTarget) {
|
61
72
|
options = {
|
62
73
|
...options,
|
63
|
-
...
|
74
|
+
...parseContentsAsJSON(this.chartjsOptionsTarget)
|
64
75
|
}
|
65
76
|
}
|
66
77
|
|
@@ -100,9 +111,18 @@ export default class extends SuperchartChartjsController {
|
|
100
111
|
}
|
101
112
|
}
|
102
113
|
},
|
114
|
+
interaction: {
|
115
|
+
mode: 'index',
|
116
|
+
intersect: false,
|
117
|
+
},
|
103
118
|
plugins: {
|
104
119
|
legend: {
|
105
120
|
display: false,
|
121
|
+
},
|
122
|
+
tooltip: {
|
123
|
+
enabled: false,
|
124
|
+
position: 'nearest',
|
125
|
+
external: this.describeDataForX.bind(this)
|
106
126
|
}
|
107
127
|
},
|
108
128
|
color: axisColor,
|
@@ -0,0 +1,39 @@
|
|
1
|
+
import { Controller } from '@hotwired/stimulus'
|
2
|
+
|
3
|
+
export default class extends Controller {
|
4
|
+
static targets = [ "overallDescription", "contextualDescription", "contextualDescriptionTemplate" ]
|
5
|
+
static classes = [ "hideOverallDescription", "hideContextualDescription" ]
|
6
|
+
|
7
|
+
showDescriptionWith(event) {
|
8
|
+
if (!event?.detail?.show) {
|
9
|
+
this.hideContextualDescription()
|
10
|
+
this.showOverallDescription()
|
11
|
+
return
|
12
|
+
}
|
13
|
+
|
14
|
+
this.hideOverallDescription()
|
15
|
+
const value = event?.detail?.value
|
16
|
+
const label = event?.detail?.label
|
17
|
+
let newHTML = this.contextualDescriptionTemplateTarget.innerHTML
|
18
|
+
this.contextualDescriptionTarget.innerHTML = newHTML
|
19
|
+
.replaceAll("%value%", value)
|
20
|
+
.replaceAll("%label%", label)
|
21
|
+
this.showContextualDescription()
|
22
|
+
}
|
23
|
+
|
24
|
+
hideOverallDescription() {
|
25
|
+
this.overallDescriptionTarget.classList.add(...this.hideOverallDescriptionClasses)
|
26
|
+
}
|
27
|
+
|
28
|
+
showOverallDescription() {
|
29
|
+
this.overallDescriptionTarget.classList.remove(...this.hideOverallDescriptionClasses)
|
30
|
+
}
|
31
|
+
|
32
|
+
hideContextualDescription() {
|
33
|
+
this.contextualDescriptionTarget.classList.add(...this.hideContextualDescriptionClasses)
|
34
|
+
}
|
35
|
+
|
36
|
+
showContextualDescription() {
|
37
|
+
this.contextualDescriptionTarget.classList.remove(...this.hideContextualDescriptionClasses)
|
38
|
+
}
|
39
|
+
}
|
@@ -8,22 +8,39 @@
|
|
8
8
|
[--point-stroke-color:theme('colors.white')] dark:[--point-stroke-color:theme('colors.darkPrimary.700')]
|
9
9
|
[--point-stroke-color-hover:theme('colors.gray.100')] dark:[--point-stroke-color-hover:theme('colors.darkPrimary.600')]
|
10
10
|
"
|
11
|
-
data-controller="supercharts--filterable"
|
12
|
-
data-action="superchart:update-chart->supercharts--filterable#updateChart"
|
11
|
+
data-controller="supercharts--filterable supercharts--describable"
|
12
|
+
data-action="superchart:update-chart->supercharts--filterable#updateChart superchart:description-requested->supercharts--describable#showDescriptionWith"
|
13
|
+
data-supercharts--describable-hide-overall-description-class="opacity-0"
|
14
|
+
data-supercharts--describable-hide-contextual-description-class="hidden"
|
13
15
|
>
|
14
16
|
<%= turbo_frame_tag :charts_tangible_things_filters do %>
|
15
17
|
<div class="flex justify-start">
|
16
|
-
<div class="">
|
17
|
-
<
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
18
|
+
<div class="relative">
|
19
|
+
<div data-supercharts--describable-target="overallDescription">
|
20
|
+
<h2 class="text-xs uppercase dark:text-white/50">
|
21
|
+
<% if @timespan == "1m" %>
|
22
|
+
Tangible Things last 31 days
|
23
|
+
<% elsif @timespan == "ytd" %>
|
24
|
+
Tangible Things since start of year
|
25
|
+
<% end %>
|
26
|
+
</h2>
|
27
|
+
<p class="font-semibold dark:text-white mt-2" style="font-size: 1.8rem;">
|
28
|
+
<%= @total %>
|
29
|
+
</p>
|
30
|
+
</div>
|
31
|
+
<div data-supercharts--describable-target="contextualDescription" class="hidden absolute top-0 left-0 right-0"></div>
|
32
|
+
<template data-supercharts--describable-target="contextualDescriptionTemplate">
|
33
|
+
<p class="font-semibold dark:text-white mb-1" style="font-size: 1.6rem;">%value%</p>
|
34
|
+
<p class="text-xs uppercase dark:text-white/50">
|
35
|
+
<% if @period == :day %>
|
36
|
+
Tangible Things on %label%
|
37
|
+
<% elsif @period == :week %>
|
38
|
+
Tangible Things in week of %label%
|
39
|
+
<% elsif @period == :month %>
|
40
|
+
Tangible Things in %label%
|
41
|
+
<% end %>
|
42
|
+
</p>
|
43
|
+
</template>
|
27
44
|
</div>
|
28
45
|
<div class="ml-auto">
|
29
46
|
<div
|
@@ -47,12 +64,12 @@
|
|
47
64
|
class="mt-4"
|
48
65
|
data-controller="superchart"
|
49
66
|
data-superchart-type-value="line"
|
50
|
-
data-superchart-label-value="Tangible Things per <%= @period.to_s.capitalize %>"
|
51
67
|
data-supercharts--filterable-target="chart"
|
52
68
|
data-action="update-chart->superchart#updateChart"
|
53
69
|
>
|
54
70
|
<canvas data-superchart-target="chartjsCanvas" style="height: 200px"></canvas>
|
55
|
-
<template data-superchart-target="csvData" data-supercharts--filterable-target="chartSourceData"
|
71
|
+
<template data-superchart-target="csvData" data-supercharts--filterable-target="chartSourceData"></template>
|
72
|
+
<template data-superchart-target="chartjsOptions"></template>
|
56
73
|
</div>
|
57
74
|
</div>
|
58
75
|
<% end %>
|
@@ -35,6 +35,9 @@ class Scaffolding::SuperchartsChartTransformer < Scaffolding::SuperchartsTransfo
|
|
35
35
|
)
|
36
36
|
end
|
37
37
|
|
38
|
+
# add user permissions.
|
39
|
+
add_ability_line_to_roles_yml
|
40
|
+
|
38
41
|
# apply routes.
|
39
42
|
# TODO this is a hack and should be in its own RouteFileManipulator class
|
40
43
|
lines = File.read("config/routes.rb").lines.map(&:chomp)
|
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: 0.1.
|
4
|
+
version: 0.1.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pascal Laliberté
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-10-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -47,6 +47,7 @@ files:
|
|
47
47
|
- app/controllers/account/scaffolding/completely_concrete/tangible_things/tangible_things_chart_controller.rb
|
48
48
|
- app/javascript/controllers/index.js
|
49
49
|
- app/javascript/controllers/superchart_controller.js
|
50
|
+
- app/javascript/controllers/supercharts/describable_controller.js
|
50
51
|
- app/javascript/controllers/supercharts/filterable_controller.js
|
51
52
|
- app/javascript/controllers/supercharts/filters_controller.js
|
52
53
|
- app/javascript/index.js
|