Associate "Code/Properties/Stuff" with Fields in C# without reflection. I am too indoctrinated by Javascript
Tag : chash , By : Vinicios
Date : March 29 2020, 07:55 AM
it fixes the issue I am building a library to automatically create forms for Objects in the project that I am working on. , It sounds like you are describing custom attributes - i.e. [Permissions("someLevel"), Validator("someFunction")]
public string Foo {get;set;}
public class PermissionsAttribute : Attribute {
private readonly string permissions;
public string Permissions { get {return permissions;}}
public PermissionsAttribute(string permissions) {
this.permissions = permissions;
}
}
|
get particular elements from an associate array / object in javascript
Date : March 29 2020, 07:55 AM
Hope that helps I have an array in JavaScript like this , I would suggest you to use this technique arr[0] = [250, '5u'];
arr[1] = [120, '1u'];
arr[2] = [670, '7u'];
arr[3] = [210, '2u'];
arr[4] = [850, '9u'];
arr[5] = [129, '8u'];
arr[6] = [391, '3u'];
arr[7] = [432, '6u'];
arr.sort(function(a, b) {return b[0] - a[0]});
console.log(arr[3][0]);
console.log(arr[4][0]);
console.log(arr[5][0]);
|
jQuery: associate event to existing elements, and to new elements
Date : March 29 2020, 07:55 AM
To fix the issue you can do I have a code to change an input value clicking on +/- symbols. When the value is 1, the character - disappears. , I would recommend you to use CSS .substract { display:none; }
$('input').change();
$(document).on('change', 'input', function() {
if ($(this).val() == 1) {
$('.substract').hide();
}
});
$('.add').on('click', function() {
var old_value = parseInt($('input').val());
$('input').val(old_value + 1).change();
})
$('.substract').on('click', function() {
var old_value = parseInt($('input').val());
$('input').val(old_value - 1).change();
})
$('input').change();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" value="1">
<span class="add">+</span>
<span class="substract">-</span>
|
How to associate data to the elements in a collection without modifying the elements?
Tag : java , By : user181945
Date : March 29 2020, 07:55 AM
Hope this helps I'm not an OpenGL programmer, so I don't know all the concerns on that front and therefore might be leading you astray, but given what you've described, it sounds like you're looking for a Factory pattern. If your GLMesh object needs to be used as if it were a Mesh, then it needs to extend Mesh, obviously (or there needs to be a facade class in front of the GLMesh that makes it look like a Mesh).
|
How do I associate SVG elements generated by graphviz to elements in the DOT source code
Date : March 29 2020, 07:55 AM
Does that help In cases simpler that yours, the SVG element can be used to refer back to nodes and edges. For nodes, the title is the "node_id" (not to be confused with the node attribute id) and for edges it is "node_id edgeop node_id", e.g. a -> b. From your SVG code: person<!DOCTYPE html>
<meta charset="utf-8">
<body>
<script src="//d3js.org/d3.v4.min.js"></script>
<script src="https://unpkg.com/viz.js@1.8.0/viz.js"></script>
<script src="https://unpkg.com/d3-graphviz@0.1.2/build/d3-graphviz.js"></script>
<div id="graph" style="text-align: center;"></div>
<script>
var dotSrc = `
digraph DB {
graph [label="Click on a cell to convert to upper/lower case" labelloc="t", fontsize="20.0" tooltip=" "]
rankdir=LR
node [shape=plain]
person [
// NOTE: The use of HREF is a workaround for '[Dot] ID="value" fails to produce id string in svg:svg output for html nodes'
// See https://gitlab.com/graphviz/graphviz/issues/207
// For the workaorund and more info, see http://ftp.graphviz.org/mantisbt/view.php?id=2197
label=< <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<TR><TD>Person table</TD></TR>
<TR><TD ID="p.id" PORT="id" HREF=" ">Person ID</TD></TR>
<TR><TD ID="p.fn" PORT="fn" HREF=" ">First Name</TD></TR>
<TR><TD ID="p.mn" PORT="mn" HREF=" ">Middle Name</TD></TR>
<TR><TD ID="p.ln" PORT="ln" HREF=" ">Last Name</TD></TR>
</TABLE> >
]
address [
label=< <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<TR><TD>Addresses table</TD></TR>
<TR><TD ID="a.id" PORT="id" HREF=" ">Address ID</TD></TR>
<TR><TD ID="a.pid" PORT="pid" HREF=" ">Person ID</TD></TR>
<TR><TD ID="a.index" PORT="index" HREF=" ">ZIP Code</TD></TR>
<TR><TD ID="a.street" PORT="street" HREF=" ">Street Name</TD></TR>
<TR><TD ID="a.house" PORT="house" HREF=" ">House Number</TD></TR>
<TR><TD ID="a.town" PORT="town" HREF=" ">City/Town/Village Name</TD></TR>
<TR><TD ID="a.state" PORT="state" HREF=" ">State Name</TD></TR>
<TR><TD ID="a.district" PORT="district" HREF=" ">County/District Name</TD></TR>
<TR><TD ID="a.country" PORT="country" HREF=" ">Country Name</TD></TR>
</TABLE> >
]
phone [
label=< <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<TR><TD>Phone Number table</TD></TR>
<TR><TD ID="n.pid" PORT="pid" HREF=" ">Person ID</TD></TR>
<TR><TD ID="n.cc" PORT="cc" HREF=" ">Country Code</TD></TR>
<TR><TD ID="n.ac" PORT="ac" HREF=" ">Area Code</TD></TR>
<TR><TD ID="n.n" PORT="n" HREF=" ">Phone Number</TD></TR>
</TABLE> >
]
{phone:pid address:pid} -> person:id
}
`;
var graphviz = d3.select("#graph").graphviz();
var dotSrcLines;
function render(dotSrc) {
// console.log('DOT source =', dotSrc);
dotSrcLines = dotSrc.split('\n');
transition1 = d3.transition()
.delay(100)
.duration(1000);
graphviz
.transition(transition1)
.renderDot(dotSrc);
transition1
.transition()
.duration(0)
.on("end", function () {
nodes = d3.selectAll('.node,.edge');
nodes
.selectAll("g")
.on("click", fieldClickHandler)
.selectAll("a")
// Remove the workaround attributes to avoid consuming the click events
.attr("href", null)
.attr("title", null);
});
}
function fieldClickHandler () {
var node = d3.select(this);
var text = node.selectAll('text').text();
var id = node.attr('id');
var class1 = node.attr('class');
dotElement = id.replace(/^a_/, '');
console.log('Element id="%s" class="%s" text="%s" dotElement="%s"', id, class1, text, dotElement);
console.log('Finding and deleting references to %s "%s" from the DOT source', class1, dotElement);
for (i = 0; i < dotSrcLines.length; i++) {
if (dotSrcLines[i].indexOf(dotElement) >= 0) {
ucText = text.toUpperCase();
lcText = text.toLowerCase();
if (text != ucText) {
newText = ucText;
} else {
newText = lcText;
}
console.log('Converting "%s" to "%s" on line %d: %s', text, newText, i, dotSrcLines[i]);
dotSrcLines[i] = dotSrcLines[i].replace(text, newText);
}
}
dotSrc = dotSrcLines.join('\n');
render(dotSrc);
}
render(dotSrc);
</script>
|