فهرست منبع

choose flushAndInsert in the case of configs

Yuki Takei 6 سال پیش
والد
کامیت
5e6bcbf3e1

+ 6 - 3
src/client/js/components/Admin/ImportData/GrowiZipImportForm.jsx

@@ -10,7 +10,7 @@ import { toastSuccess, toastError } from '../../../util/apiNotification';
 
 import GrowiZipImportOption from '../../../models/GrowiZipImportOption';
 
-import GrowiZipImportItem, { DEFAULT_MODE } from './GrowiZipImportItem';
+import GrowiZipImportItem, { DEFAULT_MODE, MODE_RESTRICTED_COLLECTION } from './GrowiZipImportItem';
 
 
 const GROUPS_PAGE = [
@@ -24,7 +24,6 @@ const GROUPS_CONFIG = [
 ];
 const ALL_GROUPED_COLLECTIONS = GROUPS_PAGE.concat(GROUPS_USER).concat(GROUPS_CONFIG);
 
-
 class GrowiImportForm extends React.Component {
 
   constructor(props) {
@@ -50,7 +49,11 @@ class GrowiImportForm extends React.Component {
     this.props.innerFileStats.forEach((fileStat) => {
       const { fileName, collectionName } = fileStat;
       this.initialState.collectionNameToFileNameMap[collectionName] = fileName;
-      this.initialState.optionsMap[collectionName] = new GrowiZipImportOption(DEFAULT_MODE);
+
+      // determine initial mode
+      const initialMode = MODE_RESTRICTED_COLLECTION[collectionName] || DEFAULT_MODE;
+      // create GrowiZipImportOption
+      this.initialState.optionsMap[collectionName] = new GrowiZipImportOption(initialMode);
     });
 
     this.state = this.initialState;

+ 8 - 2
src/client/js/components/Admin/ImportData/GrowiZipImportItem.jsx

@@ -17,6 +17,10 @@ const MODE_ATTR_MAP = {
 
 export const DEFAULT_MODE = 'insert';
 
+export const MODE_RESTRICTED_COLLECTION = {
+  configs: ['flushAndInsert'],
+};
+
 export default class GrowiZipImportItem extends React.Component {
 
   constructor(props) {
@@ -89,12 +93,14 @@ export default class GrowiZipImportItem extends React.Component {
 
   renderModeSelector() {
     const {
-      option,
+      collectionName, option,
     } = this.props;
 
     const attrMap = MODE_ATTR_MAP[option.mode];
     const btnColor = `btn-${attrMap.color}`;
 
+    const modes = MODE_RESTRICTED_COLLECTION[collectionName] || Object.keys(MODE_ATTR_MAP);
+
     return (
       <span className="d-inline-flex align-items-center">
         Mode:&nbsp;
@@ -111,7 +117,7 @@ export default class GrowiZipImportItem extends React.Component {
             <span className="caret ml-2"></span>
           </button>
           <ul className="dropdown-menu" aria-labelledby="ddmMode">
-            { ['insert', 'upsert', 'flushAndInsert'].map((mode) => {
+            { modes.map((mode) => {
               return (
                 <li key={`buttonMode_${mode}`}>
                   <a type="button" role="button" onClick={() => this.modeSelectedHandler(mode)}>