<!--
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~     http://www.apache.org/licenses/LICENSE-2.0
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->

<div [hidden]="!config?.optionOpen" class="vis-tools">
  <zeppelin-visualization-pivot-setting [visualization]="visualization"></zeppelin-visualization-pivot-setting>
  <zeppelin-visualization-x-axis-setting
    [visualization]="visualization"
    mode="stackedAreaChart"
  ></zeppelin-visualization-x-axis-setting>
</div>
<div nz-form nzLayout="inline" class="area-chart-setting">
  <nz-form-item>
    <nz-form-label>View</nz-form-label>
    <nz-form-control>
      <nz-radio-group [(ngModel)]="style" (ngModelChange)="viewChange()" [nzButtonStyle]="'solid'">
        <label nz-radio-button nzValue="stack">Stacked</label>
        <label nz-radio-button nzValue="stream">Stream</label>
        <label nz-radio-button nzValue="expand">Expanded</label>
      </nz-radio-group>
    </nz-form-control>
  </nz-form-item>
</div>
<div #container></div>
