小编And*_*eid的帖子

NHibernate IInterceptor实现(向原始域类没有的DB表添加属性)

当通过NHibernate更新/插入实体而不扩展具有特殊属性的域类时,如何设置一些特殊的列值?

例如:在我的情况下,我希望获得对象,并在更新/插入db之前,通过使用IInterceptor向该对象添加一些其他信息(如用户ID或计算机名称).换句话说,我想在DB Table中添加几列而不在原始对象的类中指定新属性.Object.hbm.xml在这种情况下,我是否必须配置/更改/添加到我的或App.config?

问题是我无法更改我的原始对象和基类.所以我必须弄清楚是否有可能在不更改原始对象的情况下向DB表添加信息(甚至没有从任何基类继承)

例:

原始对象有: FirstName ,LastName,Birthday,Address properties

Customer.hbm.xml 具有:

<property name="FirstName" column="FirstName" type="string" not-null="true" length="64" />
<property name="LastName" column="LastName" type="string" not-null="true" length="64" />
<property name="Birthday" column="Birthday" type="DateTime" not-null="true"  />
<property name="Address" column="Address" type="string" not-null="true"  />
Run Code Online (Sandbox Code Playgroud)

我的Interceptor类有方法:

public bool OnSave(object entity, object id, object[] state, string[] propertyNames, NHibernate.Type.IType[] types)
Run Code Online (Sandbox Code Playgroud)

在那一刻甚至可能在保存之前我必须在DB Customer表中添加额外的2列(例如计算机名和用户名),propertyNames[]并且state[]参数从一开始就没有它们,因此应该在运行中完成.

MY DB Customer表包含我上面描述的所有列.

谢谢.

database nhibernate iinterceptor

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

D3.js跨多个图同步缩放

我想制作折线图,以便与多个网页同步缩放/平移.

在此输入图像描述

这些客户端具有相同的Javascript和HTML源.用户缩放或平移客户端A,将数据域的日期时间的消息发送给另一个和发送者(上图中的蓝线),并且接收的客户端的图表将同时更改.当然,其他客户也可以这样做.它类似于聊天应用程序.

缩放功能是:

 function zoomed() {
        let msg = [];
        let t = d3.event.transform; //1)

        msg[0] = t.rescaleX(x2).domain()[0].toString(); //2)
        msg[1] = t.rescaleX(x2).domain()[1].toString(); //2)

        sendMessage(msg); //3)
    }
Run Code Online (Sandbox Code Playgroud)
  1. d3.event.transform捕获鼠标事件.
  2. 转换为日期时间和字符串.
  3. 将新的扩展域发送到服务器.

服务器将收到的数据发送给所有客户

function passiveZoom(rcv){
        let leftend;
        let rightend;
        leftend = new Date(rcv[0]);
        rightend = new Date(rcv[1]);

        x.domain([leftend, rightend]);

        svg.select(".line").attr("d", valueline);
        svg.select(".axis").call(xAxis);
    }
Run Code Online (Sandbox Code Playgroud)
  1. 收到来自服务器的消息,其中包含新的一天时间.
  2. 设置新域名,
  3. 更新折线图.

通过这种方式,可以缩放所有折线图.

但是,它不能按要求工作.

如果我在客户端A中进行缩放,则客户端B和客户端C将被更改.那没问题.

接下来,我在客户端C上放大(上图中的橙色线),所有图形都变为初始比例和位置.为什么!?

我假设鼠标坐标没有发送到客户端,但是当我发送鼠标的位置坐标时应该如何处理?

缩放|平移过程是从mbostock的块中分叉的:画笔和缩放.发件人还会更改X2域的范围t.rescalex (x2).domain().由于X2未在图纸中使用,我将X更改为x2,但我只能放大.我不明白X2的含义.

您能告诉我如何同步所有客户吗?什么是x2?

此代码适用于使用v4简单折线图分叉的客户端.

<!DOCTYPE html>
<meta charset="utf-8">
<style>
/* set the CSS */ …
Run Code Online (Sandbox Code Playgroud)

javascript interaction zoom node.js d3.js

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

.data() 处的 D3 新数据使 svg 重绘而不是更新节点位置

考虑到这个工作示例,数据更新使 svg 更新而无需重新绘制。相关的原始代码部分使其行为如解释:

// DATA JOIN
link = link.data(firstLinks ? graph.links1 : graph.links2);

// DATA JOIN
node = node.data(graph.nodes);

simulation.force("link")
    .links(firstLinks ? graph.links1 : graph.links2);
Run Code Online (Sandbox Code Playgroud)

但是,如果节点和链接数据引用是新的,即使内容相同,每次更新时也会重新绘制 svg。相关的更改代码部分使其行为如解释:

var new_graph_http_data = fetchNewData(); // unreferenced new data copy from graph

// DATA JOIN
link = link.data(firstLinks ? new_graph_http_data.links1 : new_graph_http_data.links2);

// DATA JOIN
node = node.data(new_graph_http_data.nodes);

simulation.force("link")
    .links(firstLinks ? new_graph_http_data.links1 : new_graph_http_data.links2);
Run Code Online (Sandbox Code Playgroud)

在这里,在函数 update() 中,调用 update_local() 将使图形按预期工作。调用 update_http() 将使图形重新绘制。

// DATA JOIN
link = link.data(firstLinks ? graph.links1 : graph.links2); …
Run Code Online (Sandbox Code Playgroud)

javascript d3.js force-layout

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

用D3附加到SVG的元素未出现

我正在尝试使用D3显示一些简单的条形图,其中每个条形均为div,但什么都没有显示。

var chartData =  [4, 8, 15, 16, 23, 42];
var body = d3.select('body');
    	
var svg = body.append('svg')
   .attr("width",800)
   .attr("height",500);
    				
var div = svg.append('div').attr('class', '.chart');
    	
for (var i = 0; i < chartData.length; i++) {
   div.append('div')
    	.attr("height", 20)
    	.attr("width", chartData[i]*10)
    	.html(chartData[i]);
}
Run Code Online (Sandbox Code Playgroud)
.chart div {
	font: 10px sans-serif;
  background-color: steelblue;
	text-align: right;
	padding: 3px;
  margin: 1px;
	color: white;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.17/d3.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

使用检查SVG时,我看到了新创建的元素,并且svg被突出显示,但是内部div的svg未突出显示。

javascript svg d3.js

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

预投影几何体v让浏览器做到这一点(又名效率v灵活性)

为了提高我的在线地图的性能,特别是在智能手机上,我遵循Mike Bostock的建议,在将地理数据上传到服务器之前尽可能地准备地理数据(根据他的命令行制图).例如,我正在通过d3.geoConicEqualArea()命令行投射TopoJSON数据,而不是让观看者的浏览器在加载地图时执行这项繁重的工作.

不过,我也想用类似的方法.scale,.fitSize,.fitExtent.translate动态,这意味着我不能"烤"的规模或价值事先翻译成TopoJSON文件.

Bostock建议使用d3.geoTransform()作为预测的代理,例如,d3.geoConicEqualArea()如果您正在使用已经预测的数据但仍希望扩展或翻译它.例如,要在y轴上翻转投影,他建议:

var reflectY = d3.geoTransform({
      point: function(x, y) {
        this.stream.point(x, -y);
      }
    }),

    path = d3.geoPath()
        .projection(reflectY);
Run Code Online (Sandbox Code Playgroud)

我的问题:如果我使用这个D3功能,我是不是仍然强迫观众的浏览器进行大量的数据处理,这会使性能恶化?预处理数据的目的是避免这种情况.或者我是否过高估计上述d3.geoTransform()功能涉及的处理工作?

data-visualization geo geojson d3.js topojson

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

D3.js 绘制 geojson 不正确

我正在尝试可视化俄罗斯地区。我从拿到的数据在这里,验证在这里,一切都很好-图片

但是当我尝试绘制它时,我只收到一个大的黑色矩形。

var width = 700, height = 400;

var svg = d3.select(".graph").append("svg")
        .attr("viewBox", "0 0 " + (width) + " " + (height))
        .style("max-width", "700px")
        .style("margin", "10px auto");


d3.json("83.json", function (error, mapData) {
    var features = mapData.features;

    var path = d3.geoPath().projection(d3.geoMercator());

    svg.append("g")
            .attr("class", "region")
            .selectAll("path")
            .data(features)
            .enter()
            .append("path")
            .attr("d", path)
});
Run Code Online (Sandbox Code Playgroud)

示例 - http://ustnv.ru/d3/index.html Geojson 文件 - http://ustnv.ru/d3/83.json

javascript openstreetmap geojson d3.js

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

在 d3js 中寻找具有特定投影的世界地图

我玩过d3js (v5)地图,我正在尝试生成这张地图(截图来自一个随机网站), 对于我的特殊情况,不需要呈现南极洲

在此处输入图片说明

我在这里阅读了文档:https : //github.com/d3/d3-geo#projections,并按照说明使用了 geoMercator,得到了这张平面地图,由于某种原因,该地图在北上角截断

在此处输入图片说明

获取第一张地图布局的正确方法是什么?有什么建议?

javascript geo map-projections d3.js

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

使用 D3 的 Geojson 地图仅渲染要素集合中的单个路径

我正在尝试绘制哥伦比亚某些地区的 geojson 地图。目前它只显示一个路径:,

在此处输入图片说明

我的特征集合有 52 个特征,但我只能绘制这一个特征。我不知道我做错了什么,我的代码基于其他教程。我该怎么做才能显示所有路径?

var features = mapData.features;
console.log(features);
// Update color scale domain based on data
// Draw each province as a path
 mapLayer.selectAll('path')
  .data(features)
 .enter().append('path')
  .attr('d', path)
  .attr('vector-effect', 'non-scaling-stroke')
Run Code Online (Sandbox Code Playgroud)

这是我的完整代码:

https://plnkr.co/edit/kSDtyyoWr9TSEDZ5Letv?p=preview

javascript geojson d3.js

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

使用rworldmap绘制的国家/地区的名称

早上好,我花了很多时间弄清楚如何在情节上直接添加国家名称,而不是像传奇的一部分,而是像地图的一部分.我正在使用包rworldmap,尝试使用identifyCountries ()- 但它是用于交互的东西(当用户点击地图时),而不是我找到了一个这样的解决方案 一个国家的行政区域地图与ggmap和ggplot2,但它是ggplot2,太复杂了.我试着这样做mapCountryData().希望对你有所帮助,谢谢.

data <- data.frame(Country=c('Russia','Cyprus', 'Belize', 'Austria' ,'Virgin Islands', 
        'Italy','United States' ,'United Kingdom', 'Germany', 'France' ,'Poland' ,'Switzerland'),
Value=c(-0.310,-0.206,-0.300,-0.179,-0.196,-0.174,-0.105,-0.142,-0.082,-0.097,-0.027,0.052))

    library('rworldmap')

    pdf1 <- joinCountryData2Map(data, joinCode="NAME", nameJoinColumn="Country")

    mapCountryData(pdf1, nameColumnToPlot="Value", catMethod="pretty", 
    colourPalette='white2Black',addLegend='TRUE',mapTitle=NULL, mapRegion="Europe")
Run Code Online (Sandbox Code Playgroud)

maps r rworldmap

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

R2D3 与 D3.js 相比

我想在 R 中使用R2D3 pacakge,但不确定这个包与 D3.js 库的关系。R2D3 是否以任何方式限制了 D3 的功能?我们可以在 R2D3 中使用 R 中的所有 D3 函数和特性吗?

r d3.js r2d3

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