Просмотр исходного кода

add getEog and getBog, reg exp

ryohek 5 лет назад
Родитель
Сommit
23a18e32cb

+ 1 - 1
src/client/js/components/PageEditor/CodeMirrorEditor.jsx

@@ -868,7 +868,7 @@ export default class CodeMirrorEditor extends AbstractEditor {
 
         <GridEditModal
           ref={this.gridEditModal}
-          onSave={() => { return geu.replaceGridWithHtmlWithEditor(this.getCodeMirror()) }}
+          onSave={(grid) => { return geu.replaceGridWithHtmlWithEditor(this.getCodeMirror(), grid) }}
         />
         <HandsontableModal
           ref={this.handsontableModal}

+ 3 - 1
src/client/js/components/PageEditor/GridEditModal.jsx

@@ -33,8 +33,10 @@ export default class GridEditModal extends React.PureComponent {
   }
 
   pasteCodedGrid() {
+    // dummy data
+    const pastedGridData = '<div class="container"><div class="row"><div class="col-sm-6 col-md-5 col-lg-12">dummy</div></div></div>';
     if (this.props.onSave != null) {
-      this.props.onSave();
+      this.props.onSave(pastedGridData);
     }
     this.cancel();
   }

+ 24 - 6
src/client/js/components/PageEditor/GridEditorUtil.js

@@ -4,16 +4,34 @@
 class GridEditorUtil {
 
   constructor() {
+    // TODO url
+    this.lineBeginPartOfGridRE = /(<[^/].*>)/;
+    this.lineEndPartOfGridRE = /(<\/.*>)/;
+    this.linePartOfGridRE = /(<.*>)[\s\S]*<\/.*>$/;
     this.replaceGridWithHtmlWithEditor = this.replaceGridWithHtmlWithEditor.bind(this);
   }
 
-  replaceGridWithHtmlWithEditor(editor) {
+  /**
+   * return the postion of the BOD(beginning of grid)
+   */
+  getBog(editor) {
     const curPos = editor.getCursor();
-    editor.getDoc().replaceRange(
-      // dummy data
-      '<div class="container"><div class="row"><div class="col-sm-6 col-md-5 col-lg-12">dummy</div></div></div>',
-      { line: editor.getDoc().getCursor().line, ch: editor.getDoc().getCursor().ch },
-    );
+    const firstLine = editor.getDoc().firstLine();
+    return { line: firstLine, ch: curPos.ch };
+  }
+
+  /**
+   * return the postion of the EOD(end of grid)
+   */
+  getEog(editor) {
+    const curPos = editor.getCursor();
+    const lastLine = editor.getDoc().lastLine();
+    return { line: lastLine, ch: curPos.ch };
+  }
+
+  replaceGridWithHtmlWithEditor(editor, grid) {
+    const curPos = editor.getCursor();
+    editor.getDoc().replaceRange(grid.toString(), this.getBog(editor), this.getEog(editor));
     editor.getDoc().setCursor(curPos.line + 1, 2);
   }