twaver拓扑图拖拽后保存json数据
功能描述:拓扑图。对节点进行拖拽,序列化获取拓扑图信息,保存到本地localStorage,刷新页面,执行反序列化,从本地获取之前保存的数据,展现之前拖拽后的拓扑
拓展:此处存储用的是web本地存储localStorage;后续嵌入项目时,需存入数据库,通过ajax方式存取
不废话,上代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>序列化反序列化</title>
<script type="text/javascript" src="./jquery-1.3.2.js"></script>
<script src="twaver.js"></script>
<script type="text/javascript">
var box = new twaver.ElementBox();
var network = new twaver.network.Network(box);
var datas = null;
function init() {
var networkDom = network.getView();
document.getElementById("main").appendChild(networkDom);
network.adjustBounds({x: 0, y: 30, width:1000,height:600});
var node1 = new twaver.Node({ name: 'from', name2: 'from2', location: { x: 200, y: 200 } });
box.add(node1);
var node2 = new twaver.Node({ name: 'to', name2: 'to2', location: { x: 200, y: 400 } });
box.add(node2);
var node3 = new twaver.Node({ name: 'from', name2: 'from2', location: { x: 400, y: 200 } });
box.add(node3);
var node4 = new twaver.Node({ name: 'to', name2: 'to2', location: { x: 400, y: 400 } });
box.add(node4);
var link1 = new twaver.Link(node1, node2);
var link2 = new twaver.Link(node2, node3);
var link3 = new twaver.Link(node1, node3);
var link4 = new twaver.Link(node1, node4);
box.add(link1);
box.add(link2);
box.add(link3);
box.add(link4);
//此处调用反序列化,渲染上一次拖拽保存的
deserialize();
}
function serialize() {
//将DataBox序列化成Json数据
datas = new twaver.JsonSerializer(box).serialize();
window.alert("box serialize ok!");
console.log(datas);
localStorage.setItem('key', JSON.stringify(datas));
}
function deserialize(){
var data = JSON.parse(localStorage.getItem('key'));
console.log(data);
if (data) {
box.clear();
//反序列化,并将数据与DataBox建立关系
new twaver.JsonSerializer(box).deserialize(data);
window.alert("box deserialize ok!");
}
// $.ajax({
// type:"GET",
// url:"data.json",
// datatype:"json",
// async:true,
// success:function(data){
// console.log(data);
// if (data) {
// box.clear();
// new twaver.JsonSerializer(box).deserialize(data);
// window.alert("box deserialize ok!");
// }
// }
// });
}
</script>
</head>
<body onload="init();">
<div>
<input type="button" onclick="serialize()" value="保存"/>
<span>功能介绍:1、拓扑图节点拖拽;2、点击保存,当前拓扑图存储到本地;3.刷新页面显示上次拖拽保存的拓扑图</span>
</div>
<div id="main" style="top: 30px;"></div>
</body>
</html>
效果如图

搞定,收工!
twaver拓扑图拖拽后保存json数据的更多相关文章
- jqueryui sortable拖拽后保存位置
jqueryUI sortable 可以用来进行页面拖拽布局,然而有一个小问题就是拖拽后如何保存状态. 工作中遇到了这个情况,遍把这个问题记了下来,具体思路是: 利用拖拽stop后利用 var a ...
- C# 图片缩放,拖拽后保存成图片的功能
窗体界面部分如下: 鼠标的缩放功能需要手动在 OpertaionImg.Designer.cs 文件里面添加一句代码,具体代码如下: //picturePhoto显示图片的控件 this.pictur ...
- Bootstrap 可视化布局--拖拽后弹窗进行编辑
Bootstrap 可视化布局--拖拽后弹窗进行编辑 最近后台想一个需求,使用可视化布局-中文 | en中拖拽表格后,弹窗进行编辑,保存下载后在后台生成pdf格式. 奈何各种问题不断,使用 jquer ...
- KnockoutJS 3.X API 第七章 其他技术(1) 加载和保存JSON数据
Knockout允许您实现复杂的客户端交互性,但几乎所有Web应用程序还需要与服务器交换数据,或至少将本地存储的数据序列化. 最方便的交换或存储数据的方式是JSON格式 - 大多数Ajax应用程序今天 ...
- 6.Knockout.Js(加载或保存JSON数据)
前言 Knockout可以实现很复杂的客户端交互,但是几乎所有的web应用程序都要和服务器端交换数据(至少为了本地存储需要序列化数据),交换数据最方便的就是使用JSON格式 – 大多数的Ajax应用程 ...
- Knockout应用开发指南 第六章:加载或保存JSON数据
原文:Knockout应用开发指南 第六章:加载或保存JSON数据 加载或保存JSON数据 Knockout可以实现很复杂的客户端交互,但是几乎所有的web应用程序都要和服务器端交换数据(至少为了本地 ...
- OpenLayer3调用天地图,拖拽后,地图消失的问题[已解决]
拖拽后,地图直接消失了,而且右上角的坐标变成了NaN,NaN 后来经过测试发现,原来是自己封装有问题,坐标点一定要用parseFloat()转换下,但不清楚为什么页面刚开始加载的时候没有问题,总之能解 ...
- Knockout.Js官网学习(加载或保存JSON数据)
前言 Knockout可以实现很复杂的客户端交互,但是几乎所有的web应用程序都要和服务器端交换数据(至少为了本地存储需要序列化数据),交换数据最方便的就是使用JSON格式 – 大多数的Ajax应用程 ...
- jquery Nestable 获取改变排序后的json数据 拖动排序
<script type="text/javascript"> jQuery(function($){ $('.dd').nestable(); $('.dd-hand ...
随机推荐
- SqlBulkCopy使用注意事项
1. 有标识列的表 1.1 SqlBulkCopyOptions.KeepIdentity 必须设置!否则会出现复制过去的数据产生标识列发现变化的情况! 1.2 如果原表的标识列即为主键, 那按1. ...
- 11、C内存四区模型
转载于:https://blog.csdn.net/wu5215080/article/details/38899259 内存四区模型 图1.内存四区模型流程说明1.操作系统把物理硬盘代码load到内 ...
- 洛谷 P3376【模板】网络最大流
题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点序号.汇点序号. 接下来M行每行 ...
- 关于zabbix _get返回Could not attach to pid的问题
分析:这是因为由于zabbix客户端没有权限,导致zabbix_server端无法获取到键值数据!! 解决:在客户端上添加用户sudo的权限就可以解决了. 验证:是脚本的话还要在脚本里加上sudo的命 ...
- Android SharedPreferences应用实例(记录App的使用次数)
1.介绍 2.使用方法 3.java后台 package com.lucky.test46sharedpreferences_apply; import android.content.SharedP ...
- 洛谷 P3244 / loj 2115 [HNOI2015] 落忆枫音 题解【拓扑排序】【组合】【逆元】
组合计数的一道好题.什么非主流题目 题目背景 (背景冗长请到题目页面查看) 题目描述 不妨假设枫叶上有 \(n\) 个穴位,穴位的编号为 \(1\sim n\).有若干条有向的脉络连接着这些穴位. ...
- [转] Spring Integration 系统集成
[From] http://blog.csdn.net/w_x_z_/article/details/53316618 pring Ingegration 提供了基于Spring的EIP(Enterp ...
- PIE SDK地图图层控制
1. 功能简介 地图图层控制就是图层的相关操作,如地图图层数据的添加.删除.移动和拖拽等功能. 2. 功能实现说明 2.1. 实现思路及原理说明 第一步 图层添加是调用AddLayer方法将图层添加到 ...
- js插件编程-tab框
JS代码 (function (w) { //tab对象 function Tab(config) { //定义变量,防止变量污染 this.tabMenus=null; this.tabMains= ...
- 采用MQTT协议实现android消息推送(3)选ActiveMQ当服务端
官网: http://activemq.apache.org/ 1.简介 强壮.快速.客户端支持多种语言的mqtt服务端软件. 2.特性 MQTT v3.1.AMQP v1.0.Stomp .Open ...