Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add support for JavaScript #5

Merged
merged 1 commit into from
Mar 13, 2024
Merged

feat: add support for JavaScript #5

merged 1 commit into from
Mar 13, 2024

Conversation

razonyang
Copy link
Member

No description provided.

@razonyang razonyang force-pushed the feat-js-source branch 2 times, most recently from ccd84eb to f14a828 Compare March 13, 2024 08:07
@razonyang razonyang merged commit b7aff1c into main Mar 13, 2024
2 checks passed
@razonyang
Copy link
Member Author

/cc @ezzle

Now this module supports native JavaScript definitions, which allow using echarts functionalities and do some complex calculating.

Code Block

```echarts {_js=true}
RETURN JAVASCRIPT CHARTS DEFINITION.
```

Shortcode

{{< echarts _js=true >}}
RETURN JAVASCRIPT CHARTS DEFINITION.
{{< /echarts >}}

Reading from js file, support site resource and page resource, i.e. assets/charts/pie.js.

{{< echarts _js=true _jsFile="charts/pie.js" />}}

Notes

The JavaScript definition is almost same as the official example. But you should return the options. for example.

```echarts {_js=true}
return {
  color: ['#80FFA5', '#00DDFF', '#37A2FF', '#FF0087', '#FFBF00'],
  title: {
    text: 'Gradient Stacked Area Chart'
  },
  tooltip: {
    trigger: 'axis',
    axisPointer: {
      type: 'cross',
      label: {
        backgroundColor: '#6a7985'
      }
    }
  },
  legend: {
    data: ['Line 1', 'Line 2', 'Line 3', 'Line 4', 'Line 5']
  },
  toolbox: {
    feature: {
      saveAsImage: {}
    }
  },
  grid: {
    left: '3%',
    right: '4%',
    bottom: '3%',
    containLabel: true
  },
  xAxis: [
    {
      type: 'category',
      boundaryGap: false,
      data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    }
  ],
  yAxis: [
    {
      type: 'value'
    }
  ],
  series: [
    {
      name: 'Line 1',
      type: 'line',
      stack: 'Total',
      smooth: true,
      lineStyle: {
        width: 0
      },
      showSymbol: false,
      areaStyle: {
        opacity: 0.8,
        color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
          {
            offset: 0,
            color: 'rgb(128, 255, 165)'
          },
          {
            offset: 1,
            color: 'rgb(1, 191, 236)'
          }
        ])
      },
      emphasis: {
        focus: 'series'
      },
      data: [140, 232, 101, 264, 90, 340, 250]
    },
    {
      name: 'Line 2',
      type: 'line',
      stack: 'Total',
      smooth: true,
      lineStyle: {
        width: 0
      },
      showSymbol: false,
      areaStyle: {
        opacity: 0.8,
        color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
          {
            offset: 0,
            color: 'rgb(0, 221, 255)'
          },
          {
            offset: 1,
            color: 'rgb(77, 119, 255)'
          }
        ])
      },
      emphasis: {
        focus: 'series'
      },
      data: [120, 282, 111, 234, 220, 340, 310]
    },
    {
      name: 'Line 3',
      type: 'line',
      stack: 'Total',
      smooth: true,
      lineStyle: {
        width: 0
      },
      showSymbol: false,
      areaStyle: {
        opacity: 0.8,
        color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
          {
            offset: 0,
            color: 'rgb(55, 162, 255)'
          },
          {
            offset: 1,
            color: 'rgb(116, 21, 219)'
          }
        ])
      },
      emphasis: {
        focus: 'series'
      },
      data: [320, 132, 201, 334, 190, 130, 220]
    },
    {
      name: 'Line 4',
      type: 'line',
      stack: 'Total',
      smooth: true,
      lineStyle: {
        width: 0
      },
      showSymbol: false,
      areaStyle: {
        opacity: 0.8,
        color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
          {
            offset: 0,
            color: 'rgb(255, 0, 135)'
          },
          {
            offset: 1,
            color: 'rgb(135, 0, 157)'
          }
        ])
      },
      emphasis: {
        focus: 'series'
      },
      data: [220, 402, 231, 134, 190, 230, 120]
    },
    {
      name: 'Line 5',
      type: 'line',
      stack: 'Total',
      smooth: true,
      lineStyle: {
        width: 0
      },
      showSymbol: false,
      label: {
        show: true,
        position: 'top'
      },
      areaStyle: {
        opacity: 0.8,
        color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
          {
            offset: 0,
            color: 'rgb(255, 191, 0)'
          },
          {
            offset: 1,
            color: 'rgb(224, 62, 76)'
          }
        ])
      },
      emphasis: {
        focus: 'series'
      },
      data: [220, 302, 181, 234, 210, 290, 150]
    }
  ]
}
```

@ezzle
Copy link

ezzle commented Mar 14, 2024 via email

@razonyang
Copy link
Member Author

Can you clarify how to use with files data from page ressource.

I'm working on the docs site to cover all the use case, will publish it later.

@ezzle
Copy link

ezzle commented Mar 14, 2024 via email

@razonyang
Copy link
Member Author

Docs site is live now https://echarts.hugomods.com/, I also drafted a version.

But it seems a problem about using JS way on production, seems Cloudflare Pages omit it, I'm working on it.

If you're not using Cloudflare Pages, please let me know whether if the JS way work on your platform.

@ezzle
Copy link

ezzle commented Mar 14, 2024 via email

@razonyang razonyang deleted the feat-js-source branch March 14, 2024 09:23
@razonyang
Copy link
Member Author

That issue was fixed (not related to platform), please upgrade to v0.1.3.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants