小编Kri*_*ode的帖子

Neo4j图形可视化库

最近我探索了一些图书馆,我可以在这里看到Neo4j的图形,但是没有一个人可以选择的清晰视图,所以我有一些想法我想分享.

我的要求和愿望 - 在通过REST API搜索cypher查询后,可视化包含所有关系,节点的图形.结果使交互 - 能够拖放...显示其他节点/依赖点击的机会.通过json数据导入节点,并能够快速显示至少400个元素.

所以我或多或少地探索了更多的库:

Three.js - 主要用于3D.(如果我不需要3D,那么最好不要选择这个)

Arbor.js - 绘图留给你,主要是布局库

VivaGraphJS - 易于使用,但几乎没有文档:(

D3.js - 看起来很好,但使用SVG

Cytoscape.js - 看起来不错,但我读到我不能将它与Neo4j一起使用. D3.js是Neo4j Graph DB数据实时可视化的正确选择 吗?

Processing.js - 拥有与Java类似的语言.我还没有那种类似Java语言的东西.

我有几个问题:

1)您的经历是什么 - 图书馆的好处和弱点?

2)我想我想使用SVG的画布?(屏幕上有很多小元素).

3)Arbor是布局的专用库,但是其他没有布局算法或者什么?

我会感激任何意见!:-)

visualization graph neo4j libraries cypher

6
推荐指数
2
解决办法
4293
查看次数

在GridView Yii2中对数据进行排序和过滤,其中列不在数据库中

如果我在db中有2个字段 - 概率和影响,我需要在GridView中使用这两个字段相乘的列.我设法在那里添加它:

    [
            'attribute' => 'priority',
            'format' => 'raw',
            'value' => function ($model) {
                return $model->influence * $model->probability;
            },
        ],
Run Code Online (Sandbox Code Playgroud)

但是无法处理排序,因为该列不在db中,并且向$ query添加过滤器只会导致错误.

    $query = Risks::find();
    $query->select(`probability*influence AS priority`);
    $dataProvider = new ActiveDataProvider([
        'query' => $query,
    ]);
Run Code Online (Sandbox Code Playgroud)

更新(使用Asc和Desc但不使用过滤器)

public function search($params)
{
    $query = Risks::find();

    $query->joinWith(['author', 'proj']);

    $query->select('*, (probability * influence) as priority');

    $dataProvider = new ActiveDataProvider([
        'query' => $query,
    ]);

    $dataProvider->setSort([
        'attributes' => [
           // 'id',
            'probability',
            'risks',
            'influence',
            'del' => [
                'asc' => ['risks.del' => SORT_ASC],
                'desc' => …
Run Code Online (Sandbox Code Playgroud)

php gridview yii2

6
推荐指数
1
解决办法
2万
查看次数

只允许作者使用ACF在yii2中编辑他的帖子

我使用访问控制过滤器进行访问管理,但无法完成一件事 - 例如,我如何才能让项目经理更新项目并禁止其他人?我通过matchCallback尝试了它,但在这种情况下,所有项目经理都可以更新任何项目,因为返回了TRUE.

类似的更常用的规则 - 如何允许用户使用ACF更新/删除他是作者的帖子?

         'access' => [
            'class' => AccessControl::className(),
            'only' => ['index', 'view', 'create', 'update', 'delete'],
            'rules' => [
                [
                    'actions' => ['update'],
                    'allow' => true,
                    'roles' => ['@'],
                    'matchCallback' => function ($rule, $action) {

                        return Yii::$app->user->identity->getProjectParticipants()
                                    ->one()->isManager(Yii::$app->user->identity->id);
                    }
                ],
            ],
        ],
Run Code Online (Sandbox Code Playgroud)

php access-control role yii2 yii2-user

6
推荐指数
2
解决办法
9001
查看次数

如何在yii2中的模态窗口中使用pjax更新小部件

我在一个模态窗口中有两个ActiveForms,在提交第一个表单后,我需要更新第二个表单并保持模态.

语气

据我所知,pjax可以处理,但无法让它正常工作.

在_form.php中,我有ActiveForm的widget应该更新:

    <?php $form = ActiveForm::begin([
    'id'=>'form',
    'enableAjaxValidation'=>true,
]); ?>
<?= Html::activeHiddenInput($riskModel, 'id', ['value' => $riskModel->id]) ?>

<?php Pjax::begin([
    'id' => 'solutionItems',
]) ?>
//need to update this widget
    <?= $form->field($riskModel, 'solutions_order')->widget(SortableInput::classname(), [
        'items' => $riskModel->getSolutionList(),
        'hideInput' => false,
        'options' => ['class'=>'form-control', 'readonly'=>false]
    ]); ?>
<?php Pjax::end() ?>

<div class="form-group">
    <?= Html::submitButton($riskModel->isNewRecord ? 'Create' : 'Update', ['class' => $riskModel->isNewRecord ? 'btn btn-success' : 'btn btn-primary', 'onclick' => 'return isConnected()']) ?>
</div>

<?php ActiveForm::end(); ?>
Run Code Online (Sandbox Code Playgroud)

然后我有Ajax请求,如果创建了新的解决方案,它将返回成功:

            $.ajax({
            url: form.attr('action'),
            type: …
Run Code Online (Sandbox Code Playgroud)

php ajax pjax yii2 active-form

5
推荐指数
1
解决办法
1万
查看次数

当有多个模型时,GridView 中的分页计算所有记录,但在 Yii2 中预期行数

当 GridView 中有 2 个模型并且在一行中插入了来自第二个模型的 1 个以上的记录时,我遇到了分页问题。

DataProvider 看起来像:

    $query = Risks::find();

    $dataProvider = new ActiveDataProvider([
        'query' => $query,
        'pagination' => array('pageSize' => 5),
    ]);

    $query->joinWith(['solutions']);
Run Code Online (Sandbox Code Playgroud)

Ins第二个模型我有功能:

  public function getSolutionValues (){

     ......
    $content ='';

    foreach ($order as $o){
        $model = Solutions::findOne($o);
        $content.= '<p>'.Html::encode($model->solution).'</p>';
    }
    return $content;

}
Run Code Online (Sandbox Code Playgroud)

在 GridView 我调用这个函数:

            [
            'attribute' => 'solutions',
            'format' => 'raw',
            'value' => function ($model) {
                return $model->getSolutionValues();
            },
        ],
Run Code Online (Sandbox Code Playgroud)

例如,这里只有前 3 条记录(而不是 5 条)可见,因为第一行插入了来自不同模型的 3 个条目。(如果插入一个解决方案,那么一切都可以) 在此处输入图片说明

如果我从列表中删除一个解决方案,分页不会改变,我必须从数据库中删除解决方案,然后只有分页不计入该条目。

php pagination gridview dataprovider yii2

1
推荐指数
1
解决办法
1727
查看次数