ビジュアルクエリ

1.データ構造の設計

データ記憶構造を達成するためのSQL文。デリケートな部分についてということでandor条件付き論理設計。
もちろん、最後の時間は、ハッハッハ、いくつかの違いがあります実現しました。

    Column = {
        distinct: true,
        aggr_func: 'sum',
        name: 'col1', # func(col) sum/count/avg/distinct # db.tb
        id: 12344,
        alias: 'a', # 重命名
        table: Table()
    }
    Table = {
        id: 234,
        name: "table.name",
        alias: 't'
    }
    Condition = {
        op: {
            name: 'eq',
            value: '='
        }
        value: [
            # type: condition,column,expr 
            # 如果type是condition,表示and,or类型,value内的对象都是condition类型。
            {
                type: 'column',
                col: Column()
            },
            {
                type: 'expr',
                value: '20170291'
            }
            ...
        ]
    }
    # 单条查询语句,支持mysql,hive语法
    # union 链接多个select
    json = [{
        select: [Column(),..],
        from: [Table(),..] # db.tb
        join: [{
            type: 'left join'
            table: Table()
            on: Condition()
        }],
        where: Condition(),
        group_by: [Column(),..]
        having:Condition(),
        order_by: [{
            col: Column(),
            sort: 'desc'
        }]
        limit: 10,
    }]

2.観察者に汚いからモードをチェック

  1. VUEのにangularjs移行プロジェクト
    VUEプロジェクトは、より多くの火災、コンポーネントベースの傾向が明らかになってきています。広々としangularjs、ゆっくりと新しい技術に置き換えられて。
    我々は常にプロジェクトのVUEの開発に移行したいです。パッケージVUE機能は、angularjs VUEに使用することができます。
    ngvuedirective
vue-component(v-props="ng" name="QueryVisualComponent")

QueryVisualComponent = Vue.component('query-visual-component', {
    props: ['ng']
    data: ->
        return {
            info: null
            columns: null
        }

    template: '#query-visual-component-template'
})
MetronicApp.value('QueryVisualComponent', QueryVisualComponent)
  1. AngularJS処理、通信VUEは
    、AngularJSもVUEを使用することができる注入方法で包装されている依存する$state小道具はスタックオーバーフロー、この循環参照を生成します。
    グローバル変数をしこり。使いやすいVueの$http依存リクエストデータ。(当然也可以引入axios)
g.utils.setDependencies($state.current.controller, arguments, {ctrl: @})
@ng = g.utils.dependencies
setDependencies: (controller_name, args, extra) ->
    g.utils.dependencies = extra ? {}
    for i in MetronicApp._invokeQueue
        if i[0] == '$controllerProvider'
            if i[2][0] == controller_name
                for dependency, index in i[2][1].slice(0, -1)
                    g.utils.dependencies[dependency] = args[index]
                break

3.ページの設計と開発機能

そのため、開発の流れの承認のための基礎を、フローチャートとして設計認めました。
最後に、Navicatはを参照。


2913884-ee0e58194d9ff451.png
可視化

実際の開発プロセス、赤軍二十から五千長い行進のような問題の多くは、幸い今達することが延安、ハッハッハ。

  1. ノードのノードを生成する方法SVGに問題はありませんか?
    SVGのforignObject素子の1. https://github.com/memloom-development/svg.foreignobject.js
    2.vue(DOM構造要素VUEを得る)コンパイルを拡張し
    、3.MacのforeignObject内部要素は、スクロールバーを持つことができないoverflow: auto高さより後または幅、正しい位置を占めるDOMは、実際のディスプレイのオフセット。
    4.nodeのドラッグは、クリックイベントがトリガさに影響します。ダブルクリック、マニュアルフォーカス。
    5.vuexグローバルデータ交換。
    6.右下欄ノード・ページ・サイズをドラッグ。
      #vue compile extend
        visual_header = Header(world, snippet, table_id)
        VisualHeader = Vue.extend(visual_header)
        h_comp = new VisualHeader().$mount()

        @header = world.svg.foreignObject()
            .addClass('visual-header-object')
            .appendChild(h_comp.$el, {className: 'visual-header-box flex'})
  1. SELECTは、WHERE、から、注文、リミットによってグループで、参加
    1.select(DISTINCT、計算、エイリアス)
    2.from文の結合に参加
    不一致ここより上と実際の設計データ構造(最後のコンマ3.質問を処理しますハッハッハ。)
    jqueryBuilder処理4.where and or条件とSQLショーを。
    プロセスは、有向グラフに声明に参加することはありません。
        count: 1
        sql: {
            '1':{
                columns: [],
                from: [],
                join: {},
                where: null,
                limit: 10,
                where_sql: ''
                join_sql: {}
                add_item: []
                max_select: -1,
                max_order_by: -1,
                max_group_by: -1,
                max_from: -1
            }
        }
        columns_dict: {}
        table_dict: {}
        checkedCol: {}
    }

4.データ組立

ます。https://www.jianshu.com/p/f6488a458eebで再現

おすすめ

転載: blog.csdn.net/weixin_33704234/article/details/91114642