{"record":{"id":"ab2664d1ba10fffd","repo":"octobercms/october","slug":"error-parsing-the-data-chart-options-attribute-val","errorCode":null,"errorMessage":"Error parsing the data-chart-options attribute value. ${e}","messagePattern":"Error parsing the data-chart-options attribute value\\. (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"modules/backend/assets/foundation/controls/chart/chart.line.js","lineNumber":97,"sourceCode":"                    y: 20\n                }\n            },\n            legend: {\n                show: true,\n                noColumns: 2\n            }\n        };\n\n        this.defaultDataSetOptions = {\n            shadowSize: 0\n        };\n\n        var parsedOptions = {};\n        try {\n            parsedOptions = oc.parseJSON(\"{\" + this.config.chartOptions + \"}\");\n        }\n        catch (e) {\n            throw new Error('Error parsing the data-chart-options attribute value. '+e);\n        }\n\n        this.chartOptions = $.extend({}, this.chartOptions, parsedOptions);\n\n        this.resetZoomLink = $(this.config.resetZoomLink);\n\n        this.$el.trigger('oc.chartLineInit', [this]);\n\n        // Bind events\n        if (this.config.resetZoomLink) {\n            this.resetZoomLink.on('click', this.proxy(this.clearZoom));\n        }\n\n        if (this.config.zoomable) {\n            this.$el.on(\"plotselected\", this.proxy(this.onPlotSelected));\n        }\n\n        // Markings helper","sourceCodeStart":79,"sourceCodeEnd":115,"githubUrl":"https://github.com/octobercms/october/blob/b608633a7e8922487d91a8161499020121c3b3bf/modules/backend/assets/foundation/controls/chart/chart.line.js#L79-L115","documentation":"After the partial name expression, the `{% partial %}` tag accepts only the bare keywords (`lazy`, `body`, etc.) or `paramName = expression` pairs, where paramName is a Twig NAME (hyphenated names like `data-testid` are re-assembled from NAME `-` NAME). Anything else in the argument stream — a second positional argument, a bare value, a missing `=` — falls through to the else branch and throws this generic SyntaxError.","triggerScenarios":"Passing a second positional argument: `{% partial \"alert\" \"warning\" %}`; writing a parameter without `=`: `{% partial \"alert\" type %}`; a trailing comma or an operator where a name was expected. All extra arguments must be `name=value` pairs.","commonSituations":"Assuming `{% partial %}` supports positional template variables like a function call; hand-editing templates and dropping the `=`; pasting macro-style syntax into a partial tag.","solutions":["Convert every extra argument to a `key = value` pair, e.g. `{% partial \"alert\" type=\"warning\" %}`.","Check the reported line for a missing `=` or a stray token (comma, string, number) after the partial name.","Use hyphenated names directly when needed: `{% partial \"card\" data-testid=\"card-1\" %}` is valid because NAME `-` NAME is reassembled."],"exampleFix":"// before\n{% partial \"alert\" \"warning\" %}\n\n// after\n{% partial \"alert\" type=\"warning\" %}","handlingStrategy":"try-catch","validationCode":"// Compile-check every CMS template before deploy\nuse Cms\\Classes\\Theme;\n$theme = Theme::getActiveTheme();\nforeach (Cms\\Classes\\Page::listInTheme($theme, true) as $page) {\n    $page->parseMarkup(); // throws Twig\\Error\\SyntaxError on bad {% partial %} args\n}","typeGuard":null,"tryCatchPattern":"try {\n    return $twig->render($name, $vars);\n} catch (Twig\\Error\\SyntaxError $e) {\n    // Message carries 'Invalid syntax in the partial tag. Line N'\n    return 'Template error: '.$e->getMessage();\n}","preventionTips":["Always pass extra partial arguments as name=value pairs; positional args are not supported.","Lint templates in CI with a Twig parse pass so syntax errors never reach production.","When adding attributes remember hyphenated names are supported but values still need `=`."],"tags":["twig","october-cms","partial","template-syntax","compile-time"],"backgroundTag":"twig-syntax-error","analyzedSha":"b608633a7e8922487d91a8161499020121c3b3bf","analyzedAt":"2026-08-21T04:24:57.515Z","schemaVersion":2},"datasetVersion":"2026-08-21T11:28:35.574Z"}