gpt4 book ai didi

javascript - GetOrgChart 中的动态数据源

转载 作者:行者123 更新时间:2023-12-03 02:18:16 28 4
gpt4 key购买 nike

我是编程新手,我正在使用 GetOrgChart 处理动态组织层次结构图。我想删除java脚本函数中的硬代码值并将我的mysql查询结果数据传递给javascript函数我通过查询从数据库获取数据并将其转换为json格式以在javascript函数中显示。

这是我的代码:

<?php
require ('db.php');
$selectSql = "SELECT
emp.id, emp.employee_parent_id, emp.emp_name,
emp.email,hd.desg_name
FROM
hr_employees emp
LEFT JOIN
hr_employees_designations empd ON emp.id = empd.id
LEFT JOIN
hr_designations hd ON empd.id = hd.id";

$result = mysqli_query($conn, $selectSql);
$arrAssociate = [];
while ($value = mysqli_fetch_assoc($result))
{
$json_array = json_encode($value);
echo $json_array;
//echo '<pre>', print_r($value, 1) , '</pre>';
}

?>
<!DOCTYPE html>
<html>
<head>
<title>OrgChart | Create Your Own Theme 3</title>

<style type="text/css">
html, body {
margin: 0px;
padding: 0px;
width: 100%;
height: 100%;
overflow: hidden;
}

#people {
width: 100%;
height: 100%;
}

.get-org-chart rect.get-box {
fill: #ffffff;
stroke: #D9D9D9;
}

.get-org-chart .get-text.get-text-0 {
fill: #262626;
}

.get-org-chart .get-text.get-text-1 {
fill: #262626;
}

.get-org-chart .get-text.get-text-2 {
fill: #788687;
}

.get-green.get-org-chart {
background-color: #f2f2f2;
}
.more-info {
fill: #18879B;
}

.btn path {
fill: #F8F8F8;
stroke: #D9D9D9;
}

.btn {
cursor: pointer;
}

.btn circle {
fill: #555555;
}

.btn line {
stroke-width: 3px;
stroke: #ffffff;
}
</style>
</head>
<body>
<div id="people"></div>
<script type="text/javascript">
getOrgChart.themes.myTheme =
{
size: [330, 260],
toolbarHeight: 46,
textPoints: [
{ x: 20, y: 45, width: 300 },
{ x: 120, y: 100, width: 200 },
{ x: 120, y: 125, width: 200 }
],

// textPointsNoImage: [] NOT IMPLEMENTED,

box: '<rect x="0" y="0" height="260" width="330" rx="10" ry="10"
class="get-box"></rect>'
+ '
<g transform="matrix(0.25,0,0,0.25,123,142)"><path
d="M48.014,42.889l-9.553-
4.776C37.56,37.662,37,36.756,37,35.748v-3.381c0.229-0.28,0.47-
0.599,0.719-0.951 c1.239-1.75,2.232-3.698,2.954-
5.799C42.084,24.97,43,23.575,43,22v-4c0-0.963-0.36-1.896-1-
2.625v-5.319 c0.056-0.55,0.276-3.824-2.092-
6.525C37.854,1.188,34.521,0,30,0s-7.854,1.188-
9.908,3.53C17.724,6.231,17.944,9.506,18,10.056 v5.319c-
0.64,0.729-1,1.662-

};

var orgChart = new getOrgChart(document.getElementById("people"), {
theme: "myTheme",
enableEdit: false,
enableDetailsView: false,
primaryFields: ["Title", "Name", "Email", "Image"],
color: "green",
updatedEvent: function () {
init();
},
dataSource: [
// Want Dynamic data here instead of this hard code values
{ id : 1,
parentId : null,
Name : "Jasper Lepardo",
Title : "CEO",
Email : "jasper@example.com",
Image :
"http://www.getorgchart.com/GetOrgChart/getorgchart-
demos/images/f-11.jpg"
},
{ id : 2,
parentId : 1,
Name : "John Smith",
Title : "Front-endDeveloper",
Email : "john@example.com",
Image :
"http://www.getorgchart.com/GetOrgChart/getorgchart
demos/images/f-12.jpg"
},
{ id : 3,
parentId : 1,
Name : "Avaa Field",
Title : "Project Manager",
Email : "ava@example.com",
Image :

"http://www.getorgchart.com/GetOrgChart/getorgchart-demos/images/f-
14.jpg"
},
{ id : 4,
parentId : 1,
Name : "Ava Field",
Title : "Project Manager",
Email : "ava@example.com",
Image :
"http://www.getorgchart.com/GetOrgChart/getorgchart-demos/images/f-
14.jpg" }]

});

function getNodeByClickedBtn(el) {
while (el.parentNode) {
el = el.parentNode;
if (el.getAttribute("data-node-id"))
return el;
}
return null;
}


var init = function () {
var btns = document.getElementsByClassName("btn");
for (var i = 0; i < btns.length; i++) {

btns[i].addEventListener("click", function () {
var nodeElement = getNodeByClickedBtn(this);
var action = this.getAttribute("data-action");
var id = nodeElement.getAttribute("data-node-id");
var node = orgChart.nodes[id];

switch (action) {
case "add":
orgChart.insertNode(id);
break;
case "edit":
orgChart.showEditView(id);
break;
case "preview":
orgChart.showDetailsView(id);
break;
}
});
}
}
init();
</script>
</body>
</html>

最佳答案

看看这个。

使用 Laravel( Blade ):

let json = JSON.parse('@json($your_array_here)');

没有框架(您的情况):

let json = JSON.parse('<?=json_encode($your_array_here)?>');

当你在PHP中有一个Array并且需要在JS中使用它时,你有两种实现方式:

  1. Ajax(获取、axios、xhr2);
  2. 像您一样进行硬编码。

但是请注意您的浏览器控制台(Chrome、Firefox),如果您的 JSON 格式错误,您将会收到警告。

看看 JSON.parse 和 JSON.stringify,理解这些函数也很重要。

并且不要忘记声明开头和结尾的 ',就像我在下面的示例中所做的那样。

希望对您有帮助。
祝你有美好的一天。

关于javascript - GetOrgChart 中的动态数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49273066/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com