legend_on = $values['legend'] == self::LEGEND_ON; } return $values; } public function addFields(): self { return $this ->initDataSetFields() ->initDisplayingOptionsFields() ->initTimePeriodFields() ->initLegendFields() ->addField( new CWidgetFieldMultiSelectOverrideHost() ); } private function initDataSetFields(): self { return $this->addField( (new CWidgetFieldDataSet('ds', _('Data set')))->setFlags(CWidgetField::FLAG_NOT_EMPTY) ); } private function initDisplayingOptionsFields(): self { return $this ->addField( (new CWidgetFieldRadioButtonList('source', _('History data selection'), [ self::DATA_SOURCE_AUTO => _x('Auto', 'history source selection method'), self::DATA_SOURCE_HISTORY => _('History'), self::DATA_SOURCE_TRENDS => _('Trends') ]))->setDefault(self::DATA_SOURCE_AUTO) ) ->addField( (new CWidgetFieldRadioButtonList('draw_type', _('Draw'), [ self::DRAW_TYPE_PIE => _('Pie'), self::DRAW_TYPE_DOUGHNUT => _('Doughnut') ]))->setDefault(self::DRAW_TYPE_PIE) ) ->addField( (new CWidgetFieldRangeControl('width', _('Width'), self::WIDTH_MIN, self::WIDTH_DEFAULT, self::WIDTH_STEP )) ->setDefault(self::WIDTH_DEFAULT) ) ->addField( (new CWidgetFieldRangeControl('space', _('Space between sectors'), self::SPACE_MIN, self::SPACE_MAX )) ->setDefault(self::SPACE_DEFAULT) ) ->addField( new CWidgetFieldCheckBox('merge', null, _('Merge sectors smaller than ')) ) ->addField( (new CWidgetFieldIntegerBox('merge_percent', null, self::MERGE_PERCENT_MIN, self::MERGE_PERCENT_MAX )) ->setDefault(self::MERGE_PERCENT_MIN) ) ->addField( (new CWidgetFieldColor('merge_color')) ) ->addField( (new CWidgetFieldCheckBox('total_show', _('Show total value'))) ) ->addField( (new CWidgetFieldRadioButtonList('value_size_type', _('Size'), [ self::VALUE_SIZE_AUTO => _('Auto'), self::VALUE_SIZE_CUSTOM => _('Custom') ]))->setDefault(self::VALUE_SIZE_AUTO) ) ->addField( (new CWidgetFieldIntegerBox('value_size', null, self::VALUE_SIZE_MIN, self::VALUE_SIZE_MAX )) ->setDefault(self::VALUE_SIZE_DEFAULT) ) ->addField( (new CWidgetFieldIntegerBox('decimal_places', _('Decimal places'), self::VALUE_DECIMALS_MIN, self::VALUE_DECIMALS_MAX )) ->setDefault(self::VALUE_DECIMALS_DEFAULT) ->setFlags(CWidgetField::FLAG_NOT_EMPTY) ) ->addField( (new CWidgetFieldCheckBox('units_show', null, _('Units'))) ) ->addField( (new CWidgetFieldTextBox('units')) ) ->addField( (new CWidgetFieldCheckBox('value_bold', _('Bold'))) ) ->addField( new CWidgetFieldColor('value_color', _('Color')) ); } private function initTimePeriodFields(): self { return $this ->addField( (new CWidgetFieldTimePeriod('time_period', _('Time period'))) ->setDefault([ CWidgetField::FOREIGN_REFERENCE_KEY => CWidgetField::createTypedReference( CWidgetField::REFERENCE_DASHBOARD, CWidgetsData::DATA_TYPE_TIME_PERIOD ) ]) ->setDefaultPeriod(['from' => 'now-1h', 'to' => 'now']) ->setFlags(CWidgetField::FLAG_NOT_EMPTY | CWidgetField::FLAG_LABEL_ASTERISK) ); } private function initLegendFields(): self { return $this ->addField( (new CWidgetFieldCheckBox('legend', _('Show legend')))->setDefault(self::LEGEND_ON) ) ->addField( (new CWidgetFieldCheckBox('legend_aggregation', _('Show aggregation function'))) ->setFlags(!$this->legend_on ? CWidgetField::FLAG_DISABLED : 0x00) ) ->addField( (new CWidgetFieldRangeControl('legend_lines', _('Number of rows'), self::LEGEND_LINES_MIN, self::LEGEND_LINES_MAX )) ->setDefault(self::LEGEND_LINES_MIN) ->setFlags(!$this->legend_on ? CWidgetField::FLAG_DISABLED : 0x00) ) ->addField( (new CWidgetFieldRangeControl('legend_columns', _('Number of columns'), self::LEGEND_COLUMNS_MIN, self::LEGEND_COLUMNS_MAX )) ->setDefault(self::LEGEND_COLUMNS_MAX) ->setFlags(!$this->legend_on ? CWidgetField::FLAG_DISABLED : 0x00) ); } }