| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214 |
- import { Container } from 'unstated';
- /**
- * Service container for admin customize setting page (Customize.jsx)
- * @extends {Container} unstated Container
- */
- export default class AdminCustomizeContainer extends Container {
- constructor(appContainer) {
- super();
- this.appContainer = appContainer;
- this.state = {
- currentTheme: appContainer.config.themeType,
- currentLayout: appContainer.config.layoutType,
- currentBehavior: appContainer.config.behaviorType,
- isEnabledTimeline: appContainer.config.isEnabledTimeline,
- isSavedStatesOfTabChanges: appContainer.config.isSavedStatesOfTabChanges,
- isEnabledAttachTitleHeader: appContainer.config.isEnabledAttachTitleHeader,
- currentRecentCreatedLimit: appContainer.config.recentCreatedLimit,
- currentHighlightJsStyle: appContainer.config.highlightJsStyle,
- isHighlightJsStyleBorderEnabled: appContainer.config.highlightJsStyleBorder,
- currentCustomizeHeader: appContainer.config.customizeHeader,
- currentCustomizeCss: appContainer.config.customizeCss,
- currentCustomizeScript: appContainer.config.customizeScript,
- };
- }
- /**
- * Workaround for the mangling in production build to break constructor.name
- */
- static getClassName() {
- return 'AdminCustomizeContainer';
- }
- /**
- * Switch layoutType
- */
- switchLayoutType(lauoutName) {
- this.setState({ currentLayout: lauoutName });
- }
- /**
- * Switch themeType
- */
- switchThemeType(themeName) {
- // can't choose theme when kibela
- if (this.state.currentLayout === 'kibela') {
- return;
- }
- this.setState({ currentTheme: themeName });
- }
- /**
- * Switch behaviorType
- */
- switchBehaviorType(behaviorName) {
- this.setState({ currentBehavior: behaviorName });
- }
- /**
- * Switch enabledTimeLine
- */
- switchEnableTimeline() {
- this.setState({ isEnabledTimeline: !this.state.isEnabledTimeline });
- }
- /**
- * Switch savedStatesOfTabChanges
- */
- switchSavedStatesOfTabChanges() {
- this.setState({ isSavedStatesOfTabChanges: !this.state.isSavedStatesOfTabChanges });
- }
- /**
- * Switch enabledAttachTitleHeader
- */
- switchEnabledAttachTitleHeader() {
- this.setState({ isEnabledAttachTitleHeader: !this.state.isEnabledAttachTitleHeader });
- }
- /**
- * Switch recentCreatedLimit
- */
- switchRecentCreatedLimit(value) {
- this.setState({ currentRecentCreatedLimit: value });
- }
- /**
- * Switch highlightJsStyle
- */
- switchHighlightJsStyle(value) {
- this.setState({ currentHighlightJsStyle: value });
- }
- /**
- * Switch highlightJsStyleBorder
- */
- switchHighlightJsStyleBorder() {
- this.setState({ isHighlightJsStyleBorderEnabled: !this.state.isHighlightJsStyleBorderEnabled });
- }
- /**
- * Change customize Html header
- */
- changeCustomizeHeader(inputValue) {
- this.setState({ currentCustomizeHeader: inputValue });
- }
- /**
- * Change customize css
- */
- changeCustomizeCss(inputValue) {
- this.setState({ currentCustomizeCss: inputValue });
- }
- /**
- * Change customize script
- */
- changeCustomizeScript(inpuValue) {
- this.setState({ currentCustomizeScript: inpuValue });
- }
- /**
- * Update layout
- * @memberOf AdminCustomizeContainer
- * @return {Array} Appearance
- */
- async updateCustomizeLayoutAndTheme() {
- const response = await this.appContainer.apiv3.put('/customize-setting/layoutTheme', {
- layoutType: this.state.currentLayout,
- themeType: this.state.currentTheme,
- });
- const { customizedParams } = response.data;
- return customizedParams;
- }
- /**
- * Update behavior
- * @memberOf AdminCustomizeContainer
- * @return {string} Behavior
- */
- async updateCustomizeBehavior() {
- const response = await this.appContainer.apiv3.put('/customize-setting/behavior', {
- behaviorType: this.state.currentBehavior,
- });
- const { customizedParams } = response.data;
- return customizedParams;
- }
- /**
- * Update function
- * @memberOf AdminCustomizeContainer
- * @return {string} Functions
- */
- async updateCustomizeFunction() {
- const response = await this.appContainer.apiv3.put('/customize-setting/function', {
- isEnabledTimeline: this.state.isEnabledTimeline,
- isSavedStatesOfTabChanges: this.state.isSavedStatesOfTabChanges,
- isEnabledAttachTitleHeader: this.state.isEnabledAttachTitleHeader,
- recentCreatedLimit: this.state.currentRecentCreatedLimit,
- });
- const { customizedParams } = response.data;
- return customizedParams;
- }
- /**
- * Update code highlight
- * @memberOf AdminCustomizeContainer
- * @return {Array} Code highlight
- */
- async updateHighlightJsStyle() {
- // TODO GW-515 create apiV3
- }
- /**
- * Update customHeader
- * @memberOf AdminCustomizeContainer
- * @return {string} Customize html header
- */
- async updateCustomizeHeader() {
- // TODO GW-601 create apiV3
- }
- /**
- * Update customCss
- * @memberOf AdminCustomizeContainer
- * @return {string} Customize css
- */
- async updateCustomizeCss() {
- const response = await this.appContainer.apiv3.put('/customize-setting/customizeCss', {
- customizeCss: this.state.currentCustomizeCss,
- });
- const { customizedParams } = response.data;
- return customizedParams;
- }
- /**
- * Update customize script
- * @memberOf AdminCustomizeContainer
- * @return {string} Customize scripts
- */
- async updateCustomizeScript() {
- const response = await this.appContainer.apiv3.put('/customize-setting/customizeScript', {
- customizeScript: this.state.currentCustomizeScript,
- });
- const { customizedParams } = response.data;
- return customizedParams;
- }
- }
|