Commit ca9af1021dae20d78ca4c12b238bd1a3bc967739
Merge branch 'lggj' of http://192.168.168.245:8888/panzhaov5/bsth_control into lggj
Showing
71 changed files
with
271 additions
and
3805 deletions
Too many changes to show.
To preserve performance only 71 of 80 files are displayed.
src/main/java/com/bsth/data/zndd/OutEntrance.java
| @@ -21,6 +21,7 @@ import org.springframework.beans.factory.annotation.Value; | @@ -21,6 +21,7 @@ import org.springframework.beans.factory.annotation.Value; | ||
| 21 | import org.springframework.web.bind.annotation.*; | 21 | import org.springframework.web.bind.annotation.*; |
| 22 | import java.io.*; | 22 | import java.io.*; |
| 23 | import java.text.SimpleDateFormat; | 23 | import java.text.SimpleDateFormat; |
| 24 | +import java.time.Duration; | ||
| 24 | import java.time.LocalTime; | 25 | import java.time.LocalTime; |
| 25 | import java.time.format.DateTimeFormatter; | 26 | import java.time.format.DateTimeFormatter; |
| 26 | import java.util.*; | 27 | import java.util.*; |
| @@ -71,9 +72,12 @@ public class OutEntrance { | @@ -71,9 +72,12 @@ public class OutEntrance { | ||
| 71 | m.put("lineName",BasicData.lineCode2NameMap.get(ssLogger.getLineCode())); | 72 | m.put("lineName",BasicData.lineCode2NameMap.get(ssLogger.getLineCode())); |
| 72 | m.put("num",ssLogger.getNum()); | 73 | m.put("num",ssLogger.getNum()); |
| 73 | m.put("dir",ssLogger.getDir()); | 74 | m.put("dir",ssLogger.getDir()); |
| 74 | - | 75 | + m.put("calleeId",ssLogger.getCalleeId()); |
| 75 | //线调页面推送 | 76 | //线调页面推送 |
| 76 | - sendUtils.stationcf(m); | 77 | + if(ssLogger.getNum()>15){ |
| 78 | + sendUtils.stationcf(m); | ||
| 79 | + } | ||
| 80 | + | ||
| 77 | 81 | ||
| 78 | //查询班次情况自动回复 | 82 | //查询班次情况自动回复 |
| 79 | //当前日期 | 83 | //当前日期 |
| @@ -130,6 +134,10 @@ public class OutEntrance { | @@ -130,6 +134,10 @@ public class OutEntrance { | ||
| 130 | return rtn; | 134 | return rtn; |
| 131 | } | 135 | } |
| 132 | String num=jsonObject.getString("num"); | 136 | String num=jsonObject.getString("num"); |
| 137 | + if(Integer.parseInt(num)<15){ | ||
| 138 | + rtn.put("status",ResponseCode.SUCCESS); | ||
| 139 | + return rtn; | ||
| 140 | + } | ||
| 133 | String image=jsonObject.getString("image"); | 141 | String image=jsonObject.getString("image"); |
| 134 | String img=uploadBase64Img(image); | 142 | String img=uploadBase64Img(image); |
| 135 | JSONArray jsonArray = jsonObject.getJSONArray("stations"); | 143 | JSONArray jsonArray = jsonObject.getJSONArray("stations"); |
| @@ -139,16 +147,17 @@ public class OutEntrance { | @@ -139,16 +147,17 @@ public class OutEntrance { | ||
| 139 | JSONObject line=jsonArray.getJSONObject(i); | 147 | JSONObject line=jsonArray.getJSONObject(i); |
| 140 | String lineCode = line.get("lineCode").toString(); | 148 | String lineCode = line.get("lineCode").toString(); |
| 141 | String stationCode = line.get("stationCode").toString(); | 149 | String stationCode = line.get("stationCode").toString(); |
| 142 | - StationRoute stationRoute=BasicData.stationCode2StationMap.get(lineCode+"_"+stationCode); | 150 | + String dir = line.get("dir").toString(); |
| 151 | + /*StationRoute stationRoute=BasicData.stationCode2StationMap.get(lineCode+"_"+stationCode);*/ | ||
| 143 | Map m = new HashMap(); | 152 | Map m = new HashMap(); |
| 144 | m.put("image", img); | 153 | m.put("image", img); |
| 145 | m.put("stationCode", stationCode); | 154 | m.put("stationCode", stationCode); |
| 146 | - m.put("lineCode", stationRoute.getLineCode()); | ||
| 147 | - m.put("stationName",BasicData.stationCode2NameMap.get(stationRoute.getLineCode()+"_"+stationRoute.getDirections()+"_"+stationRoute.getStationCode())); | ||
| 148 | - m.put("lineName",BasicData.lineCode2NameMap.get(stationRoute.getLineCode())); | 155 | + m.put("lineCode", lineCode); |
| 156 | + m.put("stationName",BasicData.stationCode2NameMap.get(lineCode+"_"+dir+"_"+stationCode)); | ||
| 157 | + m.put("lineName",BasicData.lineCode2NameMap.get(lineCode)); | ||
| 149 | m.put("num",num); | 158 | m.put("num",num); |
| 150 | - m.put("xlDir",stationRoute.getDirections()); | ||
| 151 | - List<ScheduleRealInfo> srList=dayOfSchedule.findByLineAndUpDown(stationRoute.getLineCode(),stationRoute.getDirections()); | 159 | + m.put("xlDir",dir); |
| 160 | + List<ScheduleRealInfo> srList=dayOfSchedule.findByLineAndUpDown(lineCode,Integer.parseInt(dir)); | ||
| 152 | List<ScheduleRealInfo> sl=new ArrayList<>(); | 161 | List<ScheduleRealInfo> sl=new ArrayList<>(); |
| 153 | for (ScheduleRealInfo scheduleRealInfo : srList) {//筛选出运营班次 | 162 | for (ScheduleRealInfo scheduleRealInfo : srList) {//筛选出运营班次 |
| 154 | if((scheduleRealInfo.getBcType().equals("normal")||scheduleRealInfo.getBcType().equals("region"))){ | 163 | if((scheduleRealInfo.getBcType().equals("normal")||scheduleRealInfo.getBcType().equals("region"))){ |
| @@ -162,11 +171,15 @@ public class OutEntrance { | @@ -162,11 +171,15 @@ public class OutEntrance { | ||
| 162 | } | 171 | } |
| 163 | }); | 172 | }); |
| 164 | ScheduleRealInfo schedule = null; | 173 | ScheduleRealInfo schedule = null; |
| 174 | + ScheduleRealInfo schedule2 = null; | ||
| 165 | for (int i1 = 0; i1 < sl.size(); i1++) {//最近的已发车班次 | 175 | for (int i1 = 0; i1 < sl.size(); i1++) {//最近的已发车班次 |
| 166 | ScheduleRealInfo scheduleRealInfo=sl.get(i1); | 176 | ScheduleRealInfo scheduleRealInfo=sl.get(i1); |
| 167 | LocalTime fcsj=LocalTime.parse(scheduleRealInfo.getFcsj(),dateTimeFormatter); | 177 | LocalTime fcsj=LocalTime.parse(scheduleRealInfo.getFcsj(),dateTimeFormatter); |
| 168 | - if((scheduleRealInfo.getBcType().equals("normal")||scheduleRealInfo.getBcType().equals("region")) &&scheduleRealInfo.getXlDir().equals(String.valueOf(stationRoute.getDirections())) && fcsj.isAfter(localTime)){ | ||
| 169 | - schedule =sl.get(i1-1);; | 178 | + if(fcsj.isAfter(localTime)){ |
| 179 | + schedule =sl.get(i1-1); | ||
| 180 | + if(i1<sl.size()){ | ||
| 181 | + schedule2 =sl.get(i1); | ||
| 182 | + } | ||
| 170 | break; | 183 | break; |
| 171 | } | 184 | } |
| 172 | } | 185 | } |
| @@ -177,6 +190,14 @@ public class OutEntrance { | @@ -177,6 +190,14 @@ public class OutEntrance { | ||
| 177 | m.put("rq",localTime.format(dateTimeFormatter)); //检测到时间 | 190 | m.put("rq",localTime.format(dateTimeFormatter)); //检测到时间 |
| 178 | m.put("ids",AutomaticSch.UUID()); | 191 | m.put("ids",AutomaticSch.UUID()); |
| 179 | m.put("type","KLYJ"); | 192 | m.put("type","KLYJ"); |
| 193 | + LocalTime fcsj = LocalTime.parse(schedule2.getDfsj(),DateTimeFormatter.ofPattern("HH:mm")); | ||
| 194 | + LocalTime now = LocalTime.now(); | ||
| 195 | + if(Duration.between(now,fcsj).toMinutes()==0){ | ||
| 196 | + m.put("msg","下一个班次即将发车"); | ||
| 197 | + }else { | ||
| 198 | + m.put("msg","下一个班次预计还有"+ Duration.between(now,fcsj).toMinutes() +"分钟发车"); | ||
| 199 | + } | ||
| 200 | + | ||
| 180 | sendUtils.klyj(m); | 201 | sendUtils.klyj(m); |
| 181 | } | 202 | } |
| 182 | 203 |
src/main/java/com/bsth/data/zndd/carMonitor.java
| @@ -26,7 +26,7 @@ public class carMonitor { | @@ -26,7 +26,7 @@ public class carMonitor { | ||
| 26 | public List<Map> carMonitor(String lineCode,String directions,String station) { | 26 | public List<Map> carMonitor(String lineCode,String directions,String station) { |
| 27 | 27 | ||
| 28 | List<Map> list = new ArrayList<>(); //返回的接口数据 | 28 | List<Map> list = new ArrayList<>(); //返回的接口数据 |
| 29 | - url = "http://127.0.0.1:9777/xxfb/jd/carMonitor?lineid="+lineCode+"&stopid="+station+"&direction="+directions; | 29 | + url = "http://58.34.52.130:9777/xxfb/jd/carMonitor?lineid="+lineCode+"&stopid="+station+"&direction="+directions; |
| 30 | InputStream in = null; | 30 | InputStream in = null; |
| 31 | OutputStream out = null; | 31 | OutputStream out = null; |
| 32 | try { | 32 | try { |
src/main/java/com/bsth/entity/zndd/StationSignsLogger.java
| @@ -28,6 +28,8 @@ public class StationSignsLogger { | @@ -28,6 +28,8 @@ public class StationSignsLogger { | ||
| 28 | 28 | ||
| 29 | private String sign; | 29 | private String sign; |
| 30 | 30 | ||
| 31 | + private String calleeId; | ||
| 32 | + | ||
| 31 | 33 | ||
| 32 | 34 | ||
| 33 | public String getLineCode() { | 35 | public String getLineCode() { |
| @@ -101,4 +103,12 @@ public class StationSignsLogger { | @@ -101,4 +103,12 @@ public class StationSignsLogger { | ||
| 101 | public void setSign(String sign) { | 103 | public void setSign(String sign) { |
| 102 | this.sign = sign; | 104 | this.sign = sign; |
| 103 | } | 105 | } |
| 106 | + | ||
| 107 | + public String getCalleeId() { | ||
| 108 | + return calleeId; | ||
| 109 | + } | ||
| 110 | + | ||
| 111 | + public void setCalleeId(String calleeId) { | ||
| 112 | + this.calleeId = calleeId; | ||
| 113 | + } | ||
| 104 | } | 114 | } |
src/main/resources/static/pages/permission/user/edit.html
| 1 | -<div class="page-head"> | ||
| 2 | - <div class="page-title"> | ||
| 3 | - <h1>编辑用户</h1> | ||
| 4 | - </div> | ||
| 5 | -</div> | ||
| 6 | - | ||
| 7 | -<ul class="page-breadcrumb breadcrumb"> | ||
| 8 | - <li><a href="/pages/home.html" data-pjax>首页</a> <i class="fa fa-circle"></i></li> | ||
| 9 | - <li><span class="active">权限管理</span> <i class="fa fa-circle"></i></li> | ||
| 10 | - <li><a href="list.html" data-pjax>用户管理</a> <i class="fa fa-circle"></i></li> | ||
| 11 | - <li><span class="active">编辑用户</span></li> | ||
| 12 | -</ul> | ||
| 13 | - | ||
| 14 | -<div class="portlet light bordered"> | ||
| 15 | - <div class="portlet-title"> | ||
| 16 | - <div class="caption"> | ||
| 17 | - <i class="icon-equalizer font-red-sunglo"></i> <span | ||
| 18 | - class="caption-subject font-red-sunglo bold uppercase">表单</span> | ||
| 19 | - </div> | ||
| 20 | - </div> | ||
| 21 | - <div class="portlet-body form"> | ||
| 22 | - <form action="/addUser" class="form-horizontal" id="user_edit_form" > | ||
| 23 | - <div class="alert alert-danger display-hide"> | ||
| 24 | - <button class="close" data-close="alert"></button> | ||
| 25 | - 您的输入有误,请检查下面的输入项 | ||
| 26 | - </div> | ||
| 27 | - <div class="form-body"> | ||
| 28 | - <div class="form-group"> | ||
| 29 | - <label class="col-md-3 control-label">登录名</label> | ||
| 30 | - <div class="col-md-4"> | ||
| 31 | - <input type="hidden" id="id" name="id"> | ||
| 32 | - <input type="text" class="form-control" id="userName" name="userName" readonly="readonly"> | ||
| 33 | - <span class="help-block"> 登录时的帐号</span> | ||
| 34 | - </div> | ||
| 35 | - </div> | ||
| 36 | - <div class="form-group"> | ||
| 37 | - <label class="col-md-3 control-label">姓名</label> | ||
| 38 | - <div class="col-md-4"> | ||
| 39 | - <input type="text" class="form-control" id="name" name="name" readonly="readonly"> | ||
| 40 | - </div> | ||
| 41 | - </div> | ||
| 42 | - <div class="form-group"> | ||
| 43 | - <label class="col-md-3 control-label">所属机构</label> | ||
| 44 | - <div class="col-md-4"> | ||
| 45 | - <input type="text" class="form-control" id="agencies" name="agencies" > | ||
| 46 | - </div> | ||
| 47 | - </div> | ||
| 48 | - | ||
| 49 | - <div class="form-group"> | ||
| 50 | - <label class="col-md-3 control-label">角色</label> | ||
| 51 | - <div class="col-md-4"> | ||
| 52 | - <select class="form-control" id="role" name="roles[]" style="width: 160px;" multiple="multiple"> | ||
| 53 | - | ||
| 54 | - </select> | ||
| 55 | - </div> | ||
| 56 | - </div> | ||
| 57 | - | ||
| 58 | - <div class="form-group"> | ||
| 59 | - <label class="col-md-3 control-label">是否启用</label> | ||
| 60 | - <div class="col-md-4"> | ||
| 61 | - <div class="input-group"> | ||
| 62 | - <select class="form-control" id="enabled" name="enabled" style="width: 160px;"> | ||
| 63 | - <option value="1">可用</option> | ||
| 64 | - <option value="0">禁用</option> | ||
| 65 | - </select> | ||
| 66 | - </div> | ||
| 67 | - </div> | ||
| 68 | - </div> | ||
| 69 | - </div> | ||
| 70 | - <div> | ||
| 71 | - <!--<iframe src="authorize.html?origin=real_control_iframe" frameborder="0" style="height: 600px;width: 100%;"></iframe>--> | ||
| 72 | - </div> | ||
| 73 | - <div class="form-actions"> | ||
| 74 | - <div class="row"> | ||
| 75 | - <div class="col-md-offset-3 col-md-4"> | ||
| 76 | - <!--<a href="main.html" class="btn green" id="nextStep" ><i class="fa fa-check"></i> 下一步</a>--> | ||
| 77 | - <button type="submit" class="btn green" ><i class="fa fa-check"></i> 提交</button> | ||
| 78 | - <a type="button" class="btn default" href="list.html" data-pjax><i class="fa fa-times"></i> 取消</a> | ||
| 79 | - </div> | ||
| 80 | - </div> | ||
| 81 | - </div> | ||
| 82 | - </form> | ||
| 83 | - <!-- END FORM--> | ||
| 84 | - </div> | ||
| 85 | -</div> | ||
| 86 | - | ||
| 87 | -<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" style="display: none;left: 50%; | ||
| 88 | - top: 50%;transform: translate(-50%,-50%);min-width:50%;overflow: visible;bottom: inherit; right: inherit;"> | ||
| 89 | - <div class="modal-dialog"> | ||
| 90 | - <div class="modal-content"> | ||
| 91 | - <div class="modal-body" style="text-align: center;"></div> | ||
| 92 | - <div class="modal-footer" style="margin: 0 auto;"> | ||
| 93 | - <center> | ||
| 94 | - <button type="button" class="btn btn-primary" data-dismiss="modal" id="noNext" style="margin-right: 20%;padding:5px 35px;background-color: #337AB7;color: white;"> 完 成 </button> | ||
| 95 | - <button type="button" class="btn btn-primary" id="yesNext">继续配置授权</button> | ||
| 96 | - </center> | ||
| 97 | - </div> | ||
| 98 | - </div><!-- /.modal-content --> | ||
| 99 | - </div><!-- /.modal --> | ||
| 100 | -</div> | ||
| 101 | -<script> | ||
| 102 | - $(function(){ | ||
| 103 | - var id = $.url().param('no'); | ||
| 104 | - if(id){ | ||
| 105 | - $get('/user/'+id,null,function(obj){ | ||
| 106 | - $("#id").attr('value',obj.id); | ||
| 107 | - $("#userName").attr('value',obj.userName); | ||
| 108 | - $("#name").attr('value',obj.name); | ||
| 109 | - $("#agencies").attr('value',obj.agencies); | ||
| 110 | - /*$get('/role/all',null,function(result){ | ||
| 111 | - $.each(result,function(i,r){ | ||
| 112 | - $("#role").append("<option value='"+r.id+"'>"+r.roleName+"</option>"); | ||
| 113 | - }); | ||
| 114 | - $.each(obj.roles,function(i,obt){ | ||
| 115 | - $("#role option[value="+obt.id+"]").attr("selected",true); | ||
| 116 | - }); | ||
| 117 | - });*/ | ||
| 118 | - // 查询下级角色 | ||
| 119 | - $.get('/role/findSubordinate', function (rs) { | ||
| 120 | - if(rs.status == "SUCCESS"){ | ||
| 121 | - $.each(rs.list,function(i,obj){ | ||
| 122 | - $("#role").append("<option value='"+obj.id+"'>"+obj.roleName+"</option>"); | ||
| 123 | - }); | ||
| 124 | - } | ||
| 125 | - $.each(obj.roles,function(i,obt){ | ||
| 126 | - $("#role option[value="+obt.id+"]").attr("selected",true); | ||
| 127 | - }); | ||
| 128 | - }); | ||
| 129 | - if(obj.enabled){ | ||
| 130 | - $("#enabled option[value=1]").attr("selected",true); | ||
| 131 | - }else{ | ||
| 132 | - $("#enabled option[value=0]").attr("selected",true); | ||
| 133 | - } | ||
| 134 | - }); | ||
| 135 | - | ||
| 136 | - }else { | ||
| 137 | - | ||
| 138 | - // 缺少ID | ||
| 139 | - layer.confirm('【ID缺失,请点击返回,重新进行修改操作】', {btn : [ '返回' ],icon: 3, title:'提示'}, function(index){ | ||
| 140 | - | ||
| 141 | - // 关闭弹出层 | ||
| 142 | - layer.close(index); | ||
| 143 | - | ||
| 144 | - // 跳转到list页面 | ||
| 145 | - loadPage('list.html'); | ||
| 146 | - | ||
| 147 | - }); | ||
| 148 | - } | ||
| 149 | - | ||
| 150 | - var form = $('#user_edit_form'); | ||
| 151 | - var error = $('.alert-danger', form); | ||
| 152 | - | ||
| 153 | - //表单 validate | ||
| 154 | - form.validate({ | ||
| 155 | - errorElement : 'span', | ||
| 156 | - errorClass : 'help-block help-block-error', | ||
| 157 | - focusInvalid : false, | ||
| 158 | - rules : { | ||
| 159 | - 'userName' : { | ||
| 160 | - required : true, | ||
| 161 | - maxlength: 25 | ||
| 162 | - }, | ||
| 163 | - 'name' : { | ||
| 164 | - required : true, | ||
| 165 | - maxlength: 25 | ||
| 166 | - }, | ||
| 167 | - 'role' : { | ||
| 168 | - required : true, | ||
| 169 | - minlength: 1 | ||
| 170 | - } | ||
| 171 | - }, | ||
| 172 | - invalidHandler : function(event, validator) { | ||
| 173 | - error.show(); | ||
| 174 | - App.scrollTo(error, -200); | ||
| 175 | - }, | ||
| 176 | - | ||
| 177 | - highlight : function(element) { | ||
| 178 | - $(element).closest('.form-group').addClass('has-error'); | ||
| 179 | - }, | ||
| 180 | - | ||
| 181 | - unhighlight : function(element) { | ||
| 182 | - $(element).closest('.form-group').removeClass('has-error'); | ||
| 183 | - }, | ||
| 184 | - | ||
| 185 | - success : function(label) { | ||
| 186 | - label.closest('.form-group').removeClass('has-error'); | ||
| 187 | - }, | ||
| 188 | - | ||
| 189 | - submitHandler : function(f) { | ||
| 190 | - var params = form.serializeJSON(); | ||
| 191 | - error.hide(); | ||
| 192 | - console.log(params); | ||
| 193 | - | ||
| 194 | - //检查一下用户是否存在 | ||
| 195 | - $.ajax({ | ||
| 196 | - url: '/user', | ||
| 197 | - type: 'POST', | ||
| 198 | - traditional: true, | ||
| 199 | - data: params, | ||
| 200 | - success: function(res){ | ||
| 201 | - layer.msg('修改用户信息成功.'); | ||
| 202 | - $('#myModal').modal(); | ||
| 203 | - //loadPage('list.html'); | ||
| 204 | - } | ||
| 205 | - }); | ||
| 206 | - } | ||
| 207 | - }); | ||
| 208 | - | ||
| 209 | - $('#noNext').click(function () { | ||
| 210 | - $('#myModal').modal('hide'); | ||
| 211 | - $('.modal-backdrop').remove(); | ||
| 212 | - | ||
| 213 | - loadPage('list.html'); | ||
| 214 | - }) | ||
| 215 | - $('#yesNext').click(function () { | ||
| 216 | - var storage = window.localStorage; | ||
| 217 | - storage.setItem("editUser",$('#id').val()); | ||
| 218 | - $('#myModal').modal('hide'); | ||
| 219 | - window.location.href='main.html' | ||
| 220 | - }) | ||
| 221 | - }); | 1 | +<div class="page-head"> |
| 2 | + <div class="page-title"> | ||
| 3 | + <h1>编辑用户</h1> | ||
| 4 | + </div> | ||
| 5 | +</div> | ||
| 6 | + | ||
| 7 | +<ul class="page-breadcrumb breadcrumb"> | ||
| 8 | + <li><a href="/pages/home.html" data-pjax>首页</a> <i class="fa fa-circle"></i></li> | ||
| 9 | + <li><span class="active">权限管理</span> <i class="fa fa-circle"></i></li> | ||
| 10 | + <li><a href="list.html" data-pjax>用户管理</a> <i class="fa fa-circle"></i></li> | ||
| 11 | + <li><span class="active">编辑用户</span></li> | ||
| 12 | +</ul> | ||
| 13 | + | ||
| 14 | +<div class="portlet light bordered"> | ||
| 15 | + <div class="portlet-title"> | ||
| 16 | + <div class="caption"> | ||
| 17 | + <i class="icon-equalizer font-red-sunglo"></i> <span | ||
| 18 | + class="caption-subject font-red-sunglo bold uppercase">表单</span> | ||
| 19 | + </div> | ||
| 20 | + </div> | ||
| 21 | + <div class="portlet-body form"> | ||
| 22 | + <form action="/addUser" class="form-horizontal" id="user_edit_form" > | ||
| 23 | + <div class="alert alert-danger display-hide"> | ||
| 24 | + <button class="close" data-close="alert"></button> | ||
| 25 | + 您的输入有误,请检查下面的输入项 | ||
| 26 | + </div> | ||
| 27 | + <div class="form-body"> | ||
| 28 | + <div class="form-group"> | ||
| 29 | + <label class="col-md-3 control-label">登录名</label> | ||
| 30 | + <div class="col-md-4"> | ||
| 31 | + <input type="hidden" id="id" name="id"> | ||
| 32 | + <input type="hidden" id="jobCode" name="jobCode"> | ||
| 33 | + <input type="hidden" id="realName" name="realName"> | ||
| 34 | + <input type="hidden" id="lastPwdDate" name="lastPwdDate"> | ||
| 35 | + <input type="hidden" id="pwdValidPeriod" name="pwdValidPeriod"> | ||
| 36 | + <input type="text" class="form-control" id="userName" name="userName" readonly="readonly"> | ||
| 37 | + <span class="help-block"> 登录时的帐号</span> | ||
| 38 | + </div> | ||
| 39 | + </div> | ||
| 40 | + <div class="form-group"> | ||
| 41 | + <label class="col-md-3 control-label">姓名</label> | ||
| 42 | + <div class="col-md-4"> | ||
| 43 | + <input type="text" class="form-control" id="name" name="name" readonly="readonly"> | ||
| 44 | + </div> | ||
| 45 | + </div> | ||
| 46 | + <div class="form-group"> | ||
| 47 | + <label class="col-md-3 control-label">所属机构</label> | ||
| 48 | + <div class="col-md-4"> | ||
| 49 | + <input type="text" class="form-control" id="agencies" name="agencies" > | ||
| 50 | + </div> | ||
| 51 | + </div> | ||
| 52 | + | ||
| 53 | + <div class="form-group"> | ||
| 54 | + <label class="col-md-3 control-label">角色</label> | ||
| 55 | + <div class="col-md-4"> | ||
| 56 | + <select class="form-control" id="role" name="roles[]" style="width: 160px;" multiple="multiple"> | ||
| 57 | + | ||
| 58 | + </select> | ||
| 59 | + </div> | ||
| 60 | + </div> | ||
| 61 | + | ||
| 62 | + <div class="form-group"> | ||
| 63 | + <label class="col-md-3 control-label">是否启用</label> | ||
| 64 | + <div class="col-md-4"> | ||
| 65 | + <div class="input-group"> | ||
| 66 | + <select class="form-control" id="enabled" name="enabled" style="width: 160px;"> | ||
| 67 | + <option value="1">可用</option> | ||
| 68 | + <option value="0">禁用</option> | ||
| 69 | + </select> | ||
| 70 | + </div> | ||
| 71 | + </div> | ||
| 72 | + </div> | ||
| 73 | + </div> | ||
| 74 | + <div> | ||
| 75 | + <!--<iframe src="authorize.html?origin=real_control_iframe" frameborder="0" style="height: 600px;width: 100%;"></iframe>--> | ||
| 76 | + </div> | ||
| 77 | + <div class="form-actions"> | ||
| 78 | + <div class="row"> | ||
| 79 | + <div class="col-md-offset-3 col-md-4"> | ||
| 80 | + <!--<a href="main.html" class="btn green" id="nextStep" ><i class="fa fa-check"></i> 下一步</a>--> | ||
| 81 | + <button type="submit" class="btn green" ><i class="fa fa-check"></i> 提交</button> | ||
| 82 | + <a type="button" class="btn default" href="list.html" data-pjax><i class="fa fa-times"></i> 取消</a> | ||
| 83 | + </div> | ||
| 84 | + </div> | ||
| 85 | + </div> | ||
| 86 | + </form> | ||
| 87 | + <!-- END FORM--> | ||
| 88 | + </div> | ||
| 89 | +</div> | ||
| 90 | + | ||
| 91 | +<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" style="display: none;left: 50%; | ||
| 92 | + top: 50%;transform: translate(-50%,-50%);min-width:50%;overflow: visible;bottom: inherit; right: inherit;"> | ||
| 93 | + <div class="modal-dialog"> | ||
| 94 | + <div class="modal-content"> | ||
| 95 | + <div class="modal-body" style="text-align: center;"></div> | ||
| 96 | + <div class="modal-footer" style="margin: 0 auto;"> | ||
| 97 | + <center> | ||
| 98 | + <button type="button" class="btn btn-primary" data-dismiss="modal" id="noNext" style="margin-right: 20%;padding:5px 35px;background-color: #337AB7;color: white;"> 完 成 </button> | ||
| 99 | + <button type="button" class="btn btn-primary" id="yesNext">继续配置授权</button> | ||
| 100 | + </center> | ||
| 101 | + </div> | ||
| 102 | + </div><!-- /.modal-content --> | ||
| 103 | + </div><!-- /.modal --> | ||
| 104 | +</div> | ||
| 105 | +<script> | ||
| 106 | + $(function(){ | ||
| 107 | + var id = $.url().param('no'); | ||
| 108 | + if(id){ | ||
| 109 | + $get('/user/'+id,null,function(obj){ | ||
| 110 | + $("#id").attr('value',obj.id); | ||
| 111 | + $("#userName").attr('value',obj.userName); | ||
| 112 | + $("#name").attr('value',obj.name); | ||
| 113 | + $("#agencies").attr('value',obj.agencies); | ||
| 114 | + $("#jobCode").attr('value',obj.jobCode); | ||
| 115 | + $("#realName").attr('value',obj.realName); | ||
| 116 | + $("#lastPwdDate").attr('value',obj.lastPwdDate); | ||
| 117 | + $("#pwdValidPeriod").attr('value',obj.pwdValidPeriod); | ||
| 118 | + /*$get('/role/all',null,function(result){ | ||
| 119 | + $.each(result,function(i,r){ | ||
| 120 | + $("#role").append("<option value='"+r.id+"'>"+r.roleName+"</option>"); | ||
| 121 | + }); | ||
| 122 | + $.each(obj.roles,function(i,obt){ | ||
| 123 | + $("#role option[value="+obt.id+"]").attr("selected",true); | ||
| 124 | + }); | ||
| 125 | + });*/ | ||
| 126 | + // 查询下级角色 | ||
| 127 | + $.get('/role/findSubordinate', function (rs) { | ||
| 128 | + if(rs.status == "SUCCESS"){ | ||
| 129 | + $.each(rs.list,function(i,obj){ | ||
| 130 | + $("#role").append("<option value='"+obj.id+"'>"+obj.roleName+"</option>"); | ||
| 131 | + }); | ||
| 132 | + } | ||
| 133 | + $.each(obj.roles,function(i,obt){ | ||
| 134 | + $("#role option[value="+obt.id+"]").attr("selected",true); | ||
| 135 | + }); | ||
| 136 | + }); | ||
| 137 | + if(obj.enabled){ | ||
| 138 | + $("#enabled option[value=1]").attr("selected",true); | ||
| 139 | + }else{ | ||
| 140 | + $("#enabled option[value=0]").attr("selected",true); | ||
| 141 | + } | ||
| 142 | + }); | ||
| 143 | + | ||
| 144 | + }else { | ||
| 145 | + | ||
| 146 | + // 缺少ID | ||
| 147 | + layer.confirm('【ID缺失,请点击返回,重新进行修改操作】', {btn : [ '返回' ],icon: 3, title:'提示'}, function(index){ | ||
| 148 | + | ||
| 149 | + // 关闭弹出层 | ||
| 150 | + layer.close(index); | ||
| 151 | + | ||
| 152 | + // 跳转到list页面 | ||
| 153 | + loadPage('list.html'); | ||
| 154 | + | ||
| 155 | + }); | ||
| 156 | + } | ||
| 157 | + | ||
| 158 | + var form = $('#user_edit_form'); | ||
| 159 | + var error = $('.alert-danger', form); | ||
| 160 | + | ||
| 161 | + //表单 validate | ||
| 162 | + form.validate({ | ||
| 163 | + errorElement : 'span', | ||
| 164 | + errorClass : 'help-block help-block-error', | ||
| 165 | + focusInvalid : false, | ||
| 166 | + rules : { | ||
| 167 | + 'userName' : { | ||
| 168 | + required : true, | ||
| 169 | + maxlength: 25 | ||
| 170 | + }, | ||
| 171 | + 'name' : { | ||
| 172 | + required : true, | ||
| 173 | + maxlength: 25 | ||
| 174 | + }, | ||
| 175 | + 'role' : { | ||
| 176 | + required : true, | ||
| 177 | + minlength: 1 | ||
| 178 | + } | ||
| 179 | + }, | ||
| 180 | + invalidHandler : function(event, validator) { | ||
| 181 | + error.show(); | ||
| 182 | + App.scrollTo(error, -200); | ||
| 183 | + }, | ||
| 184 | + | ||
| 185 | + highlight : function(element) { | ||
| 186 | + $(element).closest('.form-group').addClass('has-error'); | ||
| 187 | + }, | ||
| 188 | + | ||
| 189 | + unhighlight : function(element) { | ||
| 190 | + $(element).closest('.form-group').removeClass('has-error'); | ||
| 191 | + }, | ||
| 192 | + | ||
| 193 | + success : function(label) { | ||
| 194 | + label.closest('.form-group').removeClass('has-error'); | ||
| 195 | + }, | ||
| 196 | + | ||
| 197 | + submitHandler : function(f) { | ||
| 198 | + var params = form.serializeJSON(); | ||
| 199 | + error.hide(); | ||
| 200 | + console.log(params); | ||
| 201 | + | ||
| 202 | + //检查一下用户是否存在 | ||
| 203 | + $.ajax({ | ||
| 204 | + url: '/user', | ||
| 205 | + type: 'POST', | ||
| 206 | + traditional: true, | ||
| 207 | + data: params, | ||
| 208 | + success: function(res){ | ||
| 209 | + layer.msg('修改用户信息成功.'); | ||
| 210 | + $('#myModal').modal(); | ||
| 211 | + //loadPage('list.html'); | ||
| 212 | + } | ||
| 213 | + }); | ||
| 214 | + } | ||
| 215 | + }); | ||
| 216 | + | ||
| 217 | + $('#noNext').click(function () { | ||
| 218 | + $('#myModal').modal('hide'); | ||
| 219 | + $('.modal-backdrop').remove(); | ||
| 220 | + | ||
| 221 | + loadPage('list.html'); | ||
| 222 | + }) | ||
| 223 | + $('#yesNext').click(function () { | ||
| 224 | + var storage = window.localStorage; | ||
| 225 | + storage.setItem("editUser",$('#id').val()); | ||
| 226 | + $('#myModal').modal('hide'); | ||
| 227 | + window.location.href='main.html' | ||
| 228 | + }) | ||
| 229 | + }); | ||
| 222 | </script> | 230 | </script> |
| 223 | \ No newline at end of file | 231 | \ No newline at end of file |
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/Blueprint.Net.Server.csproj deleted
100644 → 0
| 1 | -<Project Sdk="Microsoft.NET.Sdk.Web"> | ||
| 2 | - | ||
| 3 | - <PropertyGroup> | ||
| 4 | - <TargetFramework>net8.0</TargetFramework> | ||
| 5 | - <Nullable>enable</Nullable> | ||
| 6 | - <ImplicitUsings>enable</ImplicitUsings> | ||
| 7 | - </PropertyGroup> | ||
| 8 | - | ||
| 9 | - <ItemGroup> | ||
| 10 | - <PackageReference Include="FreeSql" Version="3.2.821" /> | ||
| 11 | - <PackageReference Include="FreeSql.Provider.Sqlite" Version="3.2.821" /> | ||
| 12 | - <PackageReference Include="FreeSql.Repository" Version="3.2.821" /> | ||
| 13 | - <PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" /> | ||
| 14 | - </ItemGroup> | ||
| 15 | - | ||
| 16 | -</Project> |
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/Blueprint.Net.Server.sln deleted
100644 → 0
| 1 | - | ||
| 2 | -Microsoft Visual Studio Solution File, Format Version 12.00 | ||
| 3 | -# Visual Studio Version 17 | ||
| 4 | -VisualStudioVersion = 17.9.34622.214 | ||
| 5 | -MinimumVisualStudioVersion = 10.0.40219.1 | ||
| 6 | -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Blueprint.Net.Server", "Blueprint.Net.Server.csproj", "{650D80E6-03AB-40D8-A1DD-C9A42DF92249}" | ||
| 7 | -EndProject | ||
| 8 | -Global | ||
| 9 | - GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||
| 10 | - Debug|Any CPU = Debug|Any CPU | ||
| 11 | - Release|Any CPU = Release|Any CPU | ||
| 12 | - EndGlobalSection | ||
| 13 | - GlobalSection(ProjectConfigurationPlatforms) = postSolution | ||
| 14 | - {650D80E6-03AB-40D8-A1DD-C9A42DF92249}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
| 15 | - {650D80E6-03AB-40D8-A1DD-C9A42DF92249}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
| 16 | - {650D80E6-03AB-40D8-A1DD-C9A42DF92249}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
| 17 | - {650D80E6-03AB-40D8-A1DD-C9A42DF92249}.Release|Any CPU.Build.0 = Release|Any CPU | ||
| 18 | - EndGlobalSection | ||
| 19 | - GlobalSection(SolutionProperties) = preSolution | ||
| 20 | - HideSolutionNode = FALSE | ||
| 21 | - EndGlobalSection | ||
| 22 | - GlobalSection(ExtensibilityGlobals) = postSolution | ||
| 23 | - SolutionGuid = {6CE115DF-4AF8-4EB9-8A99-04F0BED024AC} | ||
| 24 | - EndGlobalSection | ||
| 25 | -EndGlobal |
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/Controllers/BlueprintController.cs deleted
100644 → 0
| 1 | -using Microsoft.AspNetCore.Mvc; | ||
| 2 | -using System.Collections.Frozen; | ||
| 3 | -using System.Linq; | ||
| 4 | -using System.Xml.Linq; | ||
| 5 | -using static FreeSql.Internal.GlobalFilter; | ||
| 6 | - | ||
| 7 | -namespace Blueprint.Net.Server.Controllers | ||
| 8 | -{ | ||
| 9 | - [ApiController] | ||
| 10 | - [Route("[controller]")] | ||
| 11 | - public class BlueprintController(ILogger<BlueprintController> logger, IFreeSql fsql) : ControllerBase | ||
| 12 | - { | ||
| 13 | - private readonly ILogger<BlueprintController> _logger = logger; | ||
| 14 | - private readonly IFreeSql _fsql = fsql; | ||
| 15 | - | ||
| 16 | - [HttpGet("GetProjects")] | ||
| 17 | - public async Task<ActionResult<IEnumerable<Project>>> GetProjects() | ||
| 18 | - { | ||
| 19 | - var projects = await _fsql.Select<Project>() | ||
| 20 | - .IncludeMany(p => p.Workspaces, a => a.IncludeMany(b => b.Links)) | ||
| 21 | - .IncludeMany(p => p.Workspaces, a => a.IncludeMany(b => b.Cards)) | ||
| 22 | - .IncludeMany(p => p.Workspaces, a => a.IncludeMany(b => b.Cards, c => c.IncludeMany(d => d.Nodes))) | ||
| 23 | - .ToListAsync(); | ||
| 24 | - | ||
| 25 | - List<long> linkIds = []; | ||
| 26 | - List<long> workspaceIds = []; | ||
| 27 | - | ||
| 28 | - foreach (var project in projects) | ||
| 29 | - { | ||
| 30 | - foreach (var workspace in project.Workspaces) | ||
| 31 | - { | ||
| 32 | - workspaceIds.Add(workspace.Id); | ||
| 33 | - | ||
| 34 | - } | ||
| 35 | - } | ||
| 36 | - | ||
| 37 | - var links = await _fsql.Select<Link>().Where(p => workspaceIds.Contains(p.WorkspaceId)).ToListAsync(); | ||
| 38 | - | ||
| 39 | - foreach (var link in links) | ||
| 40 | - { | ||
| 41 | - linkIds.Add(link.SourceId); | ||
| 42 | - linkIds.Add(link.TargetId); | ||
| 43 | - } | ||
| 44 | - | ||
| 45 | - var nodeConnectInfos = await _fsql.Select<NodeConnectInfo>().Where(p => linkIds.Contains(p.Id)).ToListAsync(); | ||
| 46 | - | ||
| 47 | - foreach (var project in projects) | ||
| 48 | - { | ||
| 49 | - foreach (var workspace in project.Workspaces) | ||
| 50 | - { | ||
| 51 | - | ||
| 52 | - foreach (var link in links.Where(p => p.WorkspaceId == workspace.Id)) | ||
| 53 | - { | ||
| 54 | - link.Source = nodeConnectInfos.FirstOrDefault(p => p.Id == link.SourceId) ?? new(); | ||
| 55 | - link.Target = nodeConnectInfos.FirstOrDefault(p => p.Id == link.TargetId) ?? new(); | ||
| 56 | - | ||
| 57 | - workspace.Links.Add(link); | ||
| 58 | - } | ||
| 59 | - } | ||
| 60 | - } | ||
| 61 | - | ||
| 62 | - | ||
| 63 | - return Ok(projects); | ||
| 64 | - } | ||
| 65 | - | ||
| 66 | - [HttpPost("Project")] | ||
| 67 | - public async Task<ActionResult<Project>> Project([FromBody] Project project) | ||
| 68 | - { | ||
| 69 | - | ||
| 70 | - var projectRepo = _fsql.GetRepository<Project>(); | ||
| 71 | - | ||
| 72 | - projectRepo.DbContextOptions.EnableCascadeSave = true; | ||
| 73 | - | ||
| 74 | - project = await projectRepo.InsertOrUpdateAsync(project); | ||
| 75 | - projectRepo.Attach(project); | ||
| 76 | - | ||
| 77 | - foreach (var workspaces in project.Workspaces) | ||
| 78 | - { | ||
| 79 | - foreach (var node in workspaces.Links) | ||
| 80 | - { | ||
| 81 | - | ||
| 82 | - if (node.SourceId == 0) | ||
| 83 | - { | ||
| 84 | - node.SourceId = await _fsql.Insert(node.Source).ExecuteIdentityAsync(); | ||
| 85 | - node.Source.Id = node.SourceId; | ||
| 86 | - } | ||
| 87 | - else | ||
| 88 | - { | ||
| 89 | - await _fsql.Update<NodeConnectInfo>().SetSource(node.Source).Where(p => p.Id == node.SourceId).ExecuteAffrowsAsync(); | ||
| 90 | - } | ||
| 91 | - | ||
| 92 | - if (node.TargetId == 0) | ||
| 93 | - { | ||
| 94 | - node.TargetId = await _fsql.Insert(node.Target).ExecuteIdentityAsync(); | ||
| 95 | - node.Target.Id = node.TargetId; | ||
| 96 | - } | ||
| 97 | - else | ||
| 98 | - { | ||
| 99 | - await _fsql.Update<NodeConnectInfo>().SetSource(node.Target).Where(p => p.Id == node.TargetId).ExecuteAffrowsAsync(); | ||
| 100 | - } | ||
| 101 | - } | ||
| 102 | - } | ||
| 103 | - await projectRepo.UpdateAsync(project); | ||
| 104 | - | ||
| 105 | - return Ok(project); | ||
| 106 | - | ||
| 107 | - } | ||
| 108 | - | ||
| 109 | - | ||
| 110 | - [HttpDelete("DeleteProject/{id}")] | ||
| 111 | - public async Task<IActionResult> DeleteProject(long id) | ||
| 112 | - { | ||
| 113 | - | ||
| 114 | - var repo = _fsql.GetRepository<Project>(); | ||
| 115 | - | ||
| 116 | - repo.DbContextOptions.EnableCascadeSave = true; | ||
| 117 | - | ||
| 118 | - var project = await repo.Select | ||
| 119 | - .IncludeMany(p => p.Workspaces, a => a.IncludeMany(b => b.Cards, c => c.IncludeMany(d => d.Nodes))) | ||
| 120 | - .IncludeMany(p => p.Workspaces, a => a.IncludeMany(b => b.Links)) | ||
| 121 | - .Where(p => p.Id == id) | ||
| 122 | - .FirstAsync(); | ||
| 123 | - | ||
| 124 | - var deleteIds = new List<long>(); | ||
| 125 | - | ||
| 126 | - foreach (var workspace in project.Workspaces) | ||
| 127 | - { | ||
| 128 | - foreach (var node in workspace.Links) | ||
| 129 | - { | ||
| 130 | - deleteIds.Add(node.SourceId); | ||
| 131 | - deleteIds.Add(node.TargetId); | ||
| 132 | - } | ||
| 133 | - } | ||
| 134 | - await _fsql.Delete<NodeConnectInfo>().Where(p => deleteIds.Contains(p.Id)).ExecuteAffrowsAsync(); | ||
| 135 | - | ||
| 136 | - var ret = await repo.DeleteAsync(project); | ||
| 137 | - if (ret > 0) | ||
| 138 | - return Ok(); | ||
| 139 | - return NotFound(); | ||
| 140 | - } | ||
| 141 | - [HttpDelete("DeleteWorkspace/{id}")] | ||
| 142 | - public async Task<IActionResult> DeleteWorkspace(long id) | ||
| 143 | - { | ||
| 144 | - var repo = _fsql.GetRepository<Workspace>(); | ||
| 145 | - | ||
| 146 | - repo.DbContextOptions.EnableCascadeSave = true; | ||
| 147 | - | ||
| 148 | - var workspace = await repo.Select | ||
| 149 | - .IncludeMany(p => p.Cards, a => a.IncludeMany(b => b.Nodes)) | ||
| 150 | - .IncludeMany(p => p.Links) | ||
| 151 | - .Where(p => p.Id == id) | ||
| 152 | - .FirstAsync(); | ||
| 153 | - | ||
| 154 | - | ||
| 155 | - var deleteIds = new List<long>(); | ||
| 156 | - | ||
| 157 | - foreach (var node in workspace.Links) | ||
| 158 | - { | ||
| 159 | - deleteIds.Add(node.SourceId); | ||
| 160 | - deleteIds.Add(node.TargetId); | ||
| 161 | - } | ||
| 162 | - await _fsql.Delete<NodeConnectInfo>().Where(p => deleteIds.Contains(p.Id)).ExecuteAffrowsAsync(); | ||
| 163 | - | ||
| 164 | - var ret = await repo.DeleteAsync(workspace); | ||
| 165 | - if (ret > 0) | ||
| 166 | - return Ok(); | ||
| 167 | - return NotFound(); | ||
| 168 | - } | ||
| 169 | - | ||
| 170 | - [HttpDelete("DeleteLink/{id}")] | ||
| 171 | - public async Task<IActionResult> DeleteLink(long id) | ||
| 172 | - { | ||
| 173 | - var repo = _fsql.GetRepository<Link>(); | ||
| 174 | - | ||
| 175 | - repo.DbContextOptions.EnableCascadeSave = true; | ||
| 176 | - | ||
| 177 | - var link = await repo.Select.Where(p => p.Id == id).FirstAsync(); | ||
| 178 | - | ||
| 179 | - | ||
| 180 | - var deleteIds = new List<long> | ||
| 181 | - { | ||
| 182 | - link.SourceId, | ||
| 183 | - link.TargetId | ||
| 184 | - }; | ||
| 185 | - | ||
| 186 | - await _fsql.Delete<NodeConnectInfo>().Where(p => deleteIds.Contains(p.Id)).ExecuteAffrowsAsync(); | ||
| 187 | - | ||
| 188 | - var ret = await repo.DeleteAsync(link); | ||
| 189 | - if (ret > 0) | ||
| 190 | - return Ok(); | ||
| 191 | - return NotFound(); | ||
| 192 | - } | ||
| 193 | - | ||
| 194 | - [HttpDelete("DeleteCard/{id}")] | ||
| 195 | - public async Task<IActionResult> DeleteCard(long id) | ||
| 196 | - { | ||
| 197 | - var repo = _fsql.GetRepository<Card>(); | ||
| 198 | - | ||
| 199 | - repo.DbContextOptions.EnableCascadeSave = true; | ||
| 200 | - | ||
| 201 | - var card = await repo.Select.IncludeMany(p => p.Nodes).Where(p => p.Id == id).FirstAsync(); | ||
| 202 | - | ||
| 203 | - var ret = await repo.DeleteAsync(card); | ||
| 204 | - if (ret > 0) | ||
| 205 | - return Ok(); | ||
| 206 | - return NotFound(); | ||
| 207 | - } | ||
| 208 | - | ||
| 209 | - } | ||
| 210 | -} |
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/Models.cs deleted
100644 → 0
| 1 | -using FreeSql.DataAnnotations; | ||
| 2 | -using System.ComponentModel.DataAnnotations; | ||
| 3 | -using System.Text.RegularExpressions; | ||
| 4 | - | ||
| 5 | -namespace Blueprint.Net.Server | ||
| 6 | -{ | ||
| 7 | - public class Card | ||
| 8 | - { | ||
| 9 | - [Column(IsIdentity = true, IsPrimary = true)] public long Id { get; set; } | ||
| 10 | - public long WorkspaceId { get; set; } | ||
| 11 | - public int X { get; set; } | ||
| 12 | - public int Y { get; set; } | ||
| 13 | - public string Label { get; set; } | ||
| 14 | - public string Type { get; set; } | ||
| 15 | - [Navigate(nameof(CardNodeInfo.CardId))] public List<CardNodeInfo> Nodes { get; set; } = []; | ||
| 16 | - public List<string> TitleBarColor { get; set; } = []; | ||
| 17 | - } | ||
| 18 | - | ||
| 19 | - public class Link | ||
| 20 | - { | ||
| 21 | - [Column(IsIdentity = true, IsPrimary = true)] public long Id { get; set; } | ||
| 22 | - public long WorkspaceId { get; set; } | ||
| 23 | - | ||
| 24 | - [Navigate(nameof(SourceId))] public NodeConnectInfo Source { get; set; } | ||
| 25 | - | ||
| 26 | - [Navigate(nameof(TargetId))] public NodeConnectInfo Target { get; set; } | ||
| 27 | - | ||
| 28 | - public long SourceId { get; set; } | ||
| 29 | - public long TargetId { get; set; } | ||
| 30 | - | ||
| 31 | - } | ||
| 32 | - | ||
| 33 | - public class NodeConnectInfo | ||
| 34 | - { | ||
| 35 | - [Column(IsIdentity = true, IsPrimary = true)] public long Id { get; set; } | ||
| 36 | - public string Node { get; set; } | ||
| 37 | - public int X { get; set; } | ||
| 38 | - public int Y { get; set; } | ||
| 39 | - public string Color { get; set; } | ||
| 40 | - public string EnumType { get; set; } | ||
| 41 | - } | ||
| 42 | - | ||
| 43 | - public class CardNodeInfo | ||
| 44 | - { | ||
| 45 | - [Column(IsIdentity = true, IsPrimary = true)] public long Id { get; set; } | ||
| 46 | - | ||
| 47 | - public long CardId { get; set; } | ||
| 48 | - public string Type { get; set; } | ||
| 49 | - public int Level { get; set; } | ||
| 50 | - public string EnumType { get; set; } | ||
| 51 | - public string Color { get; set; } | ||
| 52 | - public int? MultiConnected { get; set; } | ||
| 53 | - public string Slot { get; set; } | ||
| 54 | - public string Label { get; set; } | ||
| 55 | - public string Value { get; set; } | ||
| 56 | - } | ||
| 57 | - | ||
| 58 | - | ||
| 59 | - | ||
| 60 | - | ||
| 61 | - | ||
| 62 | - public class Project | ||
| 63 | - { | ||
| 64 | - [Column(IsIdentity = true, IsPrimary = true)] public long Id { get; set; } | ||
| 65 | - public string Name { get; set; } | ||
| 66 | - [Navigate(nameof(Workspace.ProjectId))] public List<Workspace> Workspaces { get; set; } = []; | ||
| 67 | - } | ||
| 68 | - | ||
| 69 | - public class Workspace | ||
| 70 | - { | ||
| 71 | - [Column(IsIdentity = true, IsPrimary = true)] public long Id { get; set; } | ||
| 72 | - public long ProjectId { get; set; } | ||
| 73 | - public string Name { get; set; } | ||
| 74 | - [Navigate(nameof(Card.WorkspaceId))] public List<Card> Cards { get; set; } = []; | ||
| 75 | - [Navigate(nameof(Card.WorkspaceId))] public List<Link> Links { get; set; } = []; | ||
| 76 | - } | ||
| 77 | - | ||
| 78 | -} |
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/Program.cs deleted
100644 → 0
| 1 | - | ||
| 2 | -namespace Blueprint.Net.Server | ||
| 3 | -{ | ||
| 4 | - public class Program | ||
| 5 | - { | ||
| 6 | - public static void Main(string[] args) | ||
| 7 | - { | ||
| 8 | - var builder = WebApplication.CreateBuilder(args); | ||
| 9 | - | ||
| 10 | - // Add services to the container. | ||
| 11 | - | ||
| 12 | - builder.Services.AddControllers(); | ||
| 13 | - // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle | ||
| 14 | - builder.Services.AddEndpointsApiExplorer(); | ||
| 15 | - builder.Services.AddSwaggerGen(); | ||
| 16 | - | ||
| 17 | - builder.Services.AddSingleton(new FreeSql.FreeSqlBuilder() | ||
| 18 | - .UseConnectionString(FreeSql.DataType.Sqlite, @"Data Source=blueprint.db") | ||
| 19 | - .UseMonitorCommand(cmd => Console.WriteLine($"Sql:{cmd.CommandText}"))//监听SQL语句 | ||
| 20 | - .UseAutoSyncStructure(true) //自动同步实体结构到数据库,FreeSql不会扫描程序集,只有CRUD时才会生成表。 | ||
| 21 | - .Build()); | ||
| 22 | - | ||
| 23 | - var app = builder.Build(); | ||
| 24 | - | ||
| 25 | - // Configure the HTTP request pipeline. | ||
| 26 | - if (app.Environment.IsDevelopment()) | ||
| 27 | - { | ||
| 28 | - app.UseSwagger(); | ||
| 29 | - app.UseSwaggerUI(); | ||
| 30 | - } | ||
| 31 | - | ||
| 32 | - app.UseAuthorization(); | ||
| 33 | - | ||
| 34 | - app.UseStaticFiles(); | ||
| 35 | - | ||
| 36 | - app.MapControllers(); | ||
| 37 | - | ||
| 38 | - app.Run(); | ||
| 39 | - } | ||
| 40 | - } | ||
| 41 | -} |
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/Properties/launchSettings.json deleted
100644 → 0
| 1 | -{ | ||
| 2 | - "$schema": "http://json.schemastore.org/launchsettings.json", | ||
| 3 | - "iisSettings": { | ||
| 4 | - "windowsAuthentication": false, | ||
| 5 | - "anonymousAuthentication": true, | ||
| 6 | - "iisExpress": { | ||
| 7 | - "applicationUrl": "http://localhost:19130", | ||
| 8 | - "sslPort": 0 | ||
| 9 | - } | ||
| 10 | - }, | ||
| 11 | - "profiles": { | ||
| 12 | - "http": { | ||
| 13 | - "commandName": "Project", | ||
| 14 | - "dotnetRunMessages": true, | ||
| 15 | - "launchBrowser": true, | ||
| 16 | - "launchUrl": "swagger", | ||
| 17 | - "applicationUrl": "http://localhost:5277", | ||
| 18 | - "environmentVariables": { | ||
| 19 | - "ASPNETCORE_ENVIRONMENT": "Development" | ||
| 20 | - } | ||
| 21 | - }, | ||
| 22 | - "IIS Express": { | ||
| 23 | - "commandName": "IISExpress", | ||
| 24 | - "launchBrowser": true, | ||
| 25 | - "launchUrl": "swagger", | ||
| 26 | - "environmentVariables": { | ||
| 27 | - "ASPNETCORE_ENVIRONMENT": "Development" | ||
| 28 | - } | ||
| 29 | - } | ||
| 30 | - } | ||
| 31 | -} |
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/appsettings.Development.json deleted
100644 → 0
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/appsettings.json deleted
100644 → 0
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/bin/Debug/net8.0/Blueprint.Net.Server.deps.json deleted
100644 → 0
| 1 | -{ | ||
| 2 | - "runtimeTarget": { | ||
| 3 | - "name": ".NETCoreApp,Version=v8.0", | ||
| 4 | - "signature": "" | ||
| 5 | - }, | ||
| 6 | - "compilationOptions": {}, | ||
| 7 | - "targets": { | ||
| 8 | - ".NETCoreApp,Version=v8.0": { | ||
| 9 | - "Blueprint.Net.Server/1.0.0": { | ||
| 10 | - "dependencies": { | ||
| 11 | - "FreeSql": "3.2.821", | ||
| 12 | - "FreeSql.Provider.Sqlite": "3.2.821", | ||
| 13 | - "FreeSql.Repository": "3.2.821", | ||
| 14 | - "Swashbuckle.AspNetCore": "6.4.0" | ||
| 15 | - }, | ||
| 16 | - "runtime": { | ||
| 17 | - "Blueprint.Net.Server.dll": {} | ||
| 18 | - } | ||
| 19 | - }, | ||
| 20 | - "FreeSql/3.2.821": { | ||
| 21 | - "runtime": { | ||
| 22 | - "lib/netstandard2.1/FreeSql.dll": { | ||
| 23 | - "assemblyVersion": "3.2.821.0", | ||
| 24 | - "fileVersion": "3.2.821.0" | ||
| 25 | - } | ||
| 26 | - }, | ||
| 27 | - "resources": { | ||
| 28 | - "lib/netstandard2.1/zh-Hans/FreeSql.resources.dll": { | ||
| 29 | - "locale": "zh-Hans" | ||
| 30 | - } | ||
| 31 | - } | ||
| 32 | - }, | ||
| 33 | - "FreeSql.DbContext/3.2.821": { | ||
| 34 | - "dependencies": { | ||
| 35 | - "FreeSql": "3.2.821", | ||
| 36 | - "Microsoft.Extensions.DependencyInjection": "8.0.0" | ||
| 37 | - }, | ||
| 38 | - "runtime": { | ||
| 39 | - "lib/net8.0/FreeSql.DbContext.dll": { | ||
| 40 | - "assemblyVersion": "3.2.821.0", | ||
| 41 | - "fileVersion": "3.2.821.0" | ||
| 42 | - } | ||
| 43 | - }, | ||
| 44 | - "resources": { | ||
| 45 | - "lib/net8.0/zh-Hans/FreeSql.DbContext.resources.dll": { | ||
| 46 | - "locale": "zh-Hans" | ||
| 47 | - } | ||
| 48 | - } | ||
| 49 | - }, | ||
| 50 | - "FreeSql.Provider.Sqlite/3.2.821": { | ||
| 51 | - "dependencies": { | ||
| 52 | - "FreeSql": "3.2.821", | ||
| 53 | - "System.Data.SQLite.Core": "1.0.115.5" | ||
| 54 | - }, | ||
| 55 | - "runtime": { | ||
| 56 | - "lib/netstandard2.0/FreeSql.Provider.Sqlite.dll": { | ||
| 57 | - "assemblyVersion": "3.2.821.0", | ||
| 58 | - "fileVersion": "3.2.821.0" | ||
| 59 | - } | ||
| 60 | - } | ||
| 61 | - }, | ||
| 62 | - "FreeSql.Repository/3.2.821": { | ||
| 63 | - "dependencies": { | ||
| 64 | - "FreeSql.DbContext": "3.2.821" | ||
| 65 | - }, | ||
| 66 | - "runtime": { | ||
| 67 | - "lib/net8.0/FreeSql.Repository.dll": { | ||
| 68 | - "assemblyVersion": "3.2.821.0", | ||
| 69 | - "fileVersion": "3.2.821.0" | ||
| 70 | - } | ||
| 71 | - } | ||
| 72 | - }, | ||
| 73 | - "Microsoft.Extensions.ApiDescription.Server/6.0.5": {}, | ||
| 74 | - "Microsoft.Extensions.DependencyInjection/8.0.0": { | ||
| 75 | - "dependencies": { | ||
| 76 | - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0" | ||
| 77 | - } | ||
| 78 | - }, | ||
| 79 | - "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.0": {}, | ||
| 80 | - "Microsoft.OpenApi/1.2.3": { | ||
| 81 | - "runtime": { | ||
| 82 | - "lib/netstandard2.0/Microsoft.OpenApi.dll": { | ||
| 83 | - "assemblyVersion": "1.2.3.0", | ||
| 84 | - "fileVersion": "1.2.3.0" | ||
| 85 | - } | ||
| 86 | - } | ||
| 87 | - }, | ||
| 88 | - "Stub.System.Data.SQLite.Core.NetStandard/1.0.115.5": { | ||
| 89 | - "runtime": { | ||
| 90 | - "lib/netstandard2.1/System.Data.SQLite.dll": { | ||
| 91 | - "assemblyVersion": "1.0.115.5", | ||
| 92 | - "fileVersion": "1.0.115.5" | ||
| 93 | - } | ||
| 94 | - }, | ||
| 95 | - "runtimeTargets": { | ||
| 96 | - "runtimes/linux-x64/native/SQLite.Interop.dll": { | ||
| 97 | - "rid": "linux-x64", | ||
| 98 | - "assetType": "native", | ||
| 99 | - "fileVersion": "0.0.0.0" | ||
| 100 | - }, | ||
| 101 | - "runtimes/osx-x64/native/SQLite.Interop.dll": { | ||
| 102 | - "rid": "osx-x64", | ||
| 103 | - "assetType": "native", | ||
| 104 | - "fileVersion": "0.0.0.0" | ||
| 105 | - }, | ||
| 106 | - "runtimes/win-x64/native/SQLite.Interop.dll": { | ||
| 107 | - "rid": "win-x64", | ||
| 108 | - "assetType": "native", | ||
| 109 | - "fileVersion": "1.0.115.5" | ||
| 110 | - }, | ||
| 111 | - "runtimes/win-x86/native/SQLite.Interop.dll": { | ||
| 112 | - "rid": "win-x86", | ||
| 113 | - "assetType": "native", | ||
| 114 | - "fileVersion": "1.0.115.5" | ||
| 115 | - } | ||
| 116 | - } | ||
| 117 | - }, | ||
| 118 | - "Swashbuckle.AspNetCore/6.4.0": { | ||
| 119 | - "dependencies": { | ||
| 120 | - "Microsoft.Extensions.ApiDescription.Server": "6.0.5", | ||
| 121 | - "Swashbuckle.AspNetCore.Swagger": "6.4.0", | ||
| 122 | - "Swashbuckle.AspNetCore.SwaggerGen": "6.4.0", | ||
| 123 | - "Swashbuckle.AspNetCore.SwaggerUI": "6.4.0" | ||
| 124 | - } | ||
| 125 | - }, | ||
| 126 | - "Swashbuckle.AspNetCore.Swagger/6.4.0": { | ||
| 127 | - "dependencies": { | ||
| 128 | - "Microsoft.OpenApi": "1.2.3" | ||
| 129 | - }, | ||
| 130 | - "runtime": { | ||
| 131 | - "lib/net6.0/Swashbuckle.AspNetCore.Swagger.dll": { | ||
| 132 | - "assemblyVersion": "6.4.0.0", | ||
| 133 | - "fileVersion": "6.4.0.0" | ||
| 134 | - } | ||
| 135 | - } | ||
| 136 | - }, | ||
| 137 | - "Swashbuckle.AspNetCore.SwaggerGen/6.4.0": { | ||
| 138 | - "dependencies": { | ||
| 139 | - "Swashbuckle.AspNetCore.Swagger": "6.4.0" | ||
| 140 | - }, | ||
| 141 | - "runtime": { | ||
| 142 | - "lib/net6.0/Swashbuckle.AspNetCore.SwaggerGen.dll": { | ||
| 143 | - "assemblyVersion": "6.4.0.0", | ||
| 144 | - "fileVersion": "6.4.0.0" | ||
| 145 | - } | ||
| 146 | - } | ||
| 147 | - }, | ||
| 148 | - "Swashbuckle.AspNetCore.SwaggerUI/6.4.0": { | ||
| 149 | - "runtime": { | ||
| 150 | - "lib/net6.0/Swashbuckle.AspNetCore.SwaggerUI.dll": { | ||
| 151 | - "assemblyVersion": "6.4.0.0", | ||
| 152 | - "fileVersion": "6.4.0.0" | ||
| 153 | - } | ||
| 154 | - } | ||
| 155 | - }, | ||
| 156 | - "System.Data.SQLite.Core/1.0.115.5": { | ||
| 157 | - "dependencies": { | ||
| 158 | - "Stub.System.Data.SQLite.Core.NetStandard": "1.0.115.5" | ||
| 159 | - } | ||
| 160 | - } | ||
| 161 | - } | ||
| 162 | - }, | ||
| 163 | - "libraries": { | ||
| 164 | - "Blueprint.Net.Server/1.0.0": { | ||
| 165 | - "type": "project", | ||
| 166 | - "serviceable": false, | ||
| 167 | - "sha512": "" | ||
| 168 | - }, | ||
| 169 | - "FreeSql/3.2.821": { | ||
| 170 | - "type": "package", | ||
| 171 | - "serviceable": true, | ||
| 172 | - "sha512": "sha512-bI/CTioEq4B9k5pqaZnXBSyJCIbHoUUTJGgQJF5osgq7/9kOxZo93hmZr8Vw6n5iFG5chx6wkcn4dnJJUsAEkA==", | ||
| 173 | - "path": "freesql/3.2.821", | ||
| 174 | - "hashPath": "freesql.3.2.821.nupkg.sha512" | ||
| 175 | - }, | ||
| 176 | - "FreeSql.DbContext/3.2.821": { | ||
| 177 | - "type": "package", | ||
| 178 | - "serviceable": true, | ||
| 179 | - "sha512": "sha512-wQWjKj7/2Iwzp5WxOE5WV/HmoVmj6fKPYGBxKB7JWxF7HudmXjeZS1Hll2ovQksqF/YujYf7SxGbDv5mU9qSGA==", | ||
| 180 | - "path": "freesql.dbcontext/3.2.821", | ||
| 181 | - "hashPath": "freesql.dbcontext.3.2.821.nupkg.sha512" | ||
| 182 | - }, | ||
| 183 | - "FreeSql.Provider.Sqlite/3.2.821": { | ||
| 184 | - "type": "package", | ||
| 185 | - "serviceable": true, | ||
| 186 | - "sha512": "sha512-vBvvq9mDz488XWYeNQSSt8t3FCKquS4DPab7hu7QVRF0ftXRAc6rRK5axFFJZjc5ABU7aIKtu1UiKQky8z/VnA==", | ||
| 187 | - "path": "freesql.provider.sqlite/3.2.821", | ||
| 188 | - "hashPath": "freesql.provider.sqlite.3.2.821.nupkg.sha512" | ||
| 189 | - }, | ||
| 190 | - "FreeSql.Repository/3.2.821": { | ||
| 191 | - "type": "package", | ||
| 192 | - "serviceable": true, | ||
| 193 | - "sha512": "sha512-cE/VG103FYXn2m63Xp7heYptPazNN+z+dUm9jZe2vNwV8LUCU3PbY04MD+liyQBCZ5WGCK70Pe4GXGfQzvRMLw==", | ||
| 194 | - "path": "freesql.repository/3.2.821", | ||
| 195 | - "hashPath": "freesql.repository.3.2.821.nupkg.sha512" | ||
| 196 | - }, | ||
| 197 | - "Microsoft.Extensions.ApiDescription.Server/6.0.5": { | ||
| 198 | - "type": "package", | ||
| 199 | - "serviceable": true, | ||
| 200 | - "sha512": "sha512-Ckb5EDBUNJdFWyajfXzUIMRkhf52fHZOQuuZg/oiu8y7zDCVwD0iHhew6MnThjHmevanpxL3f5ci2TtHQEN6bw==", | ||
| 201 | - "path": "microsoft.extensions.apidescription.server/6.0.5", | ||
| 202 | - "hashPath": "microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512" | ||
| 203 | - }, | ||
| 204 | - "Microsoft.Extensions.DependencyInjection/8.0.0": { | ||
| 205 | - "type": "package", | ||
| 206 | - "serviceable": true, | ||
| 207 | - "sha512": "sha512-V8S3bsm50ig6JSyrbcJJ8bW2b9QLGouz+G1miK3UTaOWmMtFwNNNzUf4AleyDWUmTrWMLNnFSLEQtxmxgNQnNQ==", | ||
| 208 | - "path": "microsoft.extensions.dependencyinjection/8.0.0", | ||
| 209 | - "hashPath": "microsoft.extensions.dependencyinjection.8.0.0.nupkg.sha512" | ||
| 210 | - }, | ||
| 211 | - "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.0": { | ||
| 212 | - "type": "package", | ||
| 213 | - "serviceable": true, | ||
| 214 | - "sha512": "sha512-cjWrLkJXK0rs4zofsK4bSdg+jhDLTaxrkXu4gS6Y7MAlCvRyNNgwY/lJi5RDlQOnSZweHqoyvgvbdvQsRIW+hg==", | ||
| 215 | - "path": "microsoft.extensions.dependencyinjection.abstractions/8.0.0", | ||
| 216 | - "hashPath": "microsoft.extensions.dependencyinjection.abstractions.8.0.0.nupkg.sha512" | ||
| 217 | - }, | ||
| 218 | - "Microsoft.OpenApi/1.2.3": { | ||
| 219 | - "type": "package", | ||
| 220 | - "serviceable": true, | ||
| 221 | - "sha512": "sha512-Nug3rO+7Kl5/SBAadzSMAVgqDlfGjJZ0GenQrLywJ84XGKO0uRqkunz5Wyl0SDwcR71bAATXvSdbdzPrYRYKGw==", | ||
| 222 | - "path": "microsoft.openapi/1.2.3", | ||
| 223 | - "hashPath": "microsoft.openapi.1.2.3.nupkg.sha512" | ||
| 224 | - }, | ||
| 225 | - "Stub.System.Data.SQLite.Core.NetStandard/1.0.115.5": { | ||
| 226 | - "type": "package", | ||
| 227 | - "serviceable": true, | ||
| 228 | - "sha512": "sha512-WfrqQg6WL+r4H1sVKTenNj6ERLXUukUxqcjH1rqPqXadeIWccTVpydESieD7cZ/NWQVSKLYIHuoBX5du+BFhIQ==", | ||
| 229 | - "path": "stub.system.data.sqlite.core.netstandard/1.0.115.5", | ||
| 230 | - "hashPath": "stub.system.data.sqlite.core.netstandard.1.0.115.5.nupkg.sha512" | ||
| 231 | - }, | ||
| 232 | - "Swashbuckle.AspNetCore/6.4.0": { | ||
| 233 | - "type": "package", | ||
| 234 | - "serviceable": true, | ||
| 235 | - "sha512": "sha512-eUBr4TW0up6oKDA5Xwkul289uqSMgY0xGN4pnbOIBqCcN9VKGGaPvHX3vWaG/hvocfGDP+MGzMA0bBBKz2fkmQ==", | ||
| 236 | - "path": "swashbuckle.aspnetcore/6.4.0", | ||
| 237 | - "hashPath": "swashbuckle.aspnetcore.6.4.0.nupkg.sha512" | ||
| 238 | - }, | ||
| 239 | - "Swashbuckle.AspNetCore.Swagger/6.4.0": { | ||
| 240 | - "type": "package", | ||
| 241 | - "serviceable": true, | ||
| 242 | - "sha512": "sha512-nl4SBgGM+cmthUcpwO/w1lUjevdDHAqRvfUoe4Xp/Uvuzt9mzGUwyFCqa3ODBAcZYBiFoKvrYwz0rabslJvSmQ==", | ||
| 243 | - "path": "swashbuckle.aspnetcore.swagger/6.4.0", | ||
| 244 | - "hashPath": "swashbuckle.aspnetcore.swagger.6.4.0.nupkg.sha512" | ||
| 245 | - }, | ||
| 246 | - "Swashbuckle.AspNetCore.SwaggerGen/6.4.0": { | ||
| 247 | - "type": "package", | ||
| 248 | - "serviceable": true, | ||
| 249 | - "sha512": "sha512-lXhcUBVqKrPFAQF7e/ZeDfb5PMgE8n5t6L5B6/BQSpiwxgHzmBcx8Msu42zLYFTvR5PIqE9Q9lZvSQAcwCxJjw==", | ||
| 250 | - "path": "swashbuckle.aspnetcore.swaggergen/6.4.0", | ||
| 251 | - "hashPath": "swashbuckle.aspnetcore.swaggergen.6.4.0.nupkg.sha512" | ||
| 252 | - }, | ||
| 253 | - "Swashbuckle.AspNetCore.SwaggerUI/6.4.0": { | ||
| 254 | - "type": "package", | ||
| 255 | - "serviceable": true, | ||
| 256 | - "sha512": "sha512-1Hh3atb3pi8c+v7n4/3N80Jj8RvLOXgWxzix6w3OZhB7zBGRwsy7FWr4e3hwgPweSBpwfElqj4V4nkjYabH9nQ==", | ||
| 257 | - "path": "swashbuckle.aspnetcore.swaggerui/6.4.0", | ||
| 258 | - "hashPath": "swashbuckle.aspnetcore.swaggerui.6.4.0.nupkg.sha512" | ||
| 259 | - }, | ||
| 260 | - "System.Data.SQLite.Core/1.0.115.5": { | ||
| 261 | - "type": "package", | ||
| 262 | - "serviceable": true, | ||
| 263 | - "sha512": "sha512-vADIqqgpxaC5xR6qOV8/KMZkQeSDCfmmWpVOtQx0oEr3Yjq2XdTxX7+jfE4+oO2xPovAbYiz6Q5cLRbSsDkq6Q==", | ||
| 264 | - "path": "system.data.sqlite.core/1.0.115.5", | ||
| 265 | - "hashPath": "system.data.sqlite.core.1.0.115.5.nupkg.sha512" | ||
| 266 | - } | ||
| 267 | - } | ||
| 268 | -} | ||
| 269 | \ No newline at end of file | 0 | \ No newline at end of file |
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/bin/Debug/net8.0/Blueprint.Net.Server.dll deleted
100644 → 0
No preview for this file type
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/bin/Debug/net8.0/Blueprint.Net.Server.exe deleted
100644 → 0
No preview for this file type
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/bin/Debug/net8.0/Blueprint.Net.Server.pdb deleted
100644 → 0
No preview for this file type
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/bin/Debug/net8.0/Blueprint.Net.Server.runtimeconfig.json deleted
100644 → 0
| 1 | -{ | ||
| 2 | - "runtimeOptions": { | ||
| 3 | - "tfm": "net8.0", | ||
| 4 | - "frameworks": [ | ||
| 5 | - { | ||
| 6 | - "name": "Microsoft.NETCore.App", | ||
| 7 | - "version": "8.0.0" | ||
| 8 | - }, | ||
| 9 | - { | ||
| 10 | - "name": "Microsoft.AspNetCore.App", | ||
| 11 | - "version": "8.0.0" | ||
| 12 | - } | ||
| 13 | - ], | ||
| 14 | - "configProperties": { | ||
| 15 | - "System.GC.Server": true, | ||
| 16 | - "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false | ||
| 17 | - } | ||
| 18 | - } | ||
| 19 | -} | ||
| 20 | \ No newline at end of file | 0 | \ No newline at end of file |
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/bin/Debug/net8.0/Blueprint.Net.Server.staticwebassets.runtime.json deleted
100644 → 0
| 1 | -{"ContentRoots":["E:\\Code\\Blueprint\\Blueprint.Net.Server\\wwwroot\\"],"Root":{"Children":{"index.html":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"index.html"},"Patterns":null}},"Asset":null,"Patterns":[{"ContentRootIndex":0,"Pattern":"**","Depth":0}]}} | ||
| 2 | \ No newline at end of file | 0 | \ No newline at end of file |
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/bin/Debug/net8.0/FreeSql.DbContext.dll deleted
100644 → 0
No preview for this file type
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/bin/Debug/net8.0/FreeSql.Provider.Sqlite.dll deleted
100644 → 0
No preview for this file type
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/bin/Debug/net8.0/FreeSql.Repository.dll deleted
100644 → 0
No preview for this file type
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/bin/Debug/net8.0/FreeSql.dll deleted
100644 → 0
No preview for this file type
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/bin/Debug/net8.0/Microsoft.OpenApi.dll deleted
100644 → 0
No preview for this file type
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/bin/Debug/net8.0/Swashbuckle.AspNetCore.Swagger.dll deleted
100644 → 0
No preview for this file type
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/bin/Debug/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll deleted
100644 → 0
No preview for this file type
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/bin/Debug/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll deleted
100644 → 0
No preview for this file type
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/bin/Debug/net8.0/System.Data.SQLite.dll deleted
100644 → 0
No preview for this file type
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/bin/Debug/net8.0/appsettings.Development.json deleted
100644 → 0
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/bin/Debug/net8.0/appsettings.json deleted
100644 → 0
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/bin/Debug/net8.0/runtimes/linux-x64/native/SQLite.Interop.dll deleted
100644 → 0
No preview for this file type
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/bin/Debug/net8.0/runtimes/osx-x64/native/SQLite.Interop.dll deleted
100644 → 0
No preview for this file type
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/bin/Debug/net8.0/runtimes/win-x64/native/SQLite.Interop.dll deleted
100644 → 0
No preview for this file type
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/bin/Debug/net8.0/runtimes/win-x86/native/SQLite.Interop.dll deleted
100644 → 0
No preview for this file type
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/bin/Debug/net8.0/zh-Hans/FreeSql.DbContext.resources.dll deleted
100644 → 0
No preview for this file type
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/bin/Debug/net8.0/zh-Hans/FreeSql.resources.dll deleted
100644 → 0
No preview for this file type
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/blueprint.db deleted
100644 → 0
No preview for this file type
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/obj/Blueprint.Net.Server.csproj.nuget.dgspec.json deleted
100644 → 0
| 1 | -{ | ||
| 2 | - "format": 1, | ||
| 3 | - "restore": { | ||
| 4 | - "E:\\Code\\Blueprint\\Blueprint.Net.Server\\Blueprint.Net.Server.csproj": {} | ||
| 5 | - }, | ||
| 6 | - "projects": { | ||
| 7 | - "E:\\Code\\Blueprint\\Blueprint.Net.Server\\Blueprint.Net.Server.csproj": { | ||
| 8 | - "version": "1.0.0", | ||
| 9 | - "restore": { | ||
| 10 | - "projectUniqueName": "E:\\Code\\Blueprint\\Blueprint.Net.Server\\Blueprint.Net.Server.csproj", | ||
| 11 | - "projectName": "Blueprint.Net.Server", | ||
| 12 | - "projectPath": "E:\\Code\\Blueprint\\Blueprint.Net.Server\\Blueprint.Net.Server.csproj", | ||
| 13 | - "packagesPath": "C:\\Users\\anan\\.nuget\\packages\\", | ||
| 14 | - "outputPath": "E:\\Code\\Blueprint\\Blueprint.Net.Server\\obj\\", | ||
| 15 | - "projectStyle": "PackageReference", | ||
| 16 | - "fallbackFolders": [ | ||
| 17 | - "C:\\Users\\anan\\AppData\\Roaming\\Godot\\mono\\GodotNuGetFallbackFolder", | ||
| 18 | - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" | ||
| 19 | - ], | ||
| 20 | - "configFilePaths": [ | ||
| 21 | - "C:\\Users\\anan\\AppData\\Roaming\\NuGet\\NuGet.Config", | ||
| 22 | - "C:\\Users\\anan\\AppData\\Roaming\\NuGet\\config\\Godot.Offline.Config", | ||
| 23 | - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", | ||
| 24 | - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" | ||
| 25 | - ], | ||
| 26 | - "originalTargetFrameworks": [ | ||
| 27 | - "net8.0" | ||
| 28 | - ], | ||
| 29 | - "sources": { | ||
| 30 | - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, | ||
| 31 | - "C:\\Program Files\\dotnet\\library-packs": {}, | ||
| 32 | - "https://api.nuget.org/v3/index.json": {} | ||
| 33 | - }, | ||
| 34 | - "frameworks": { | ||
| 35 | - "net8.0": { | ||
| 36 | - "targetAlias": "net8.0", | ||
| 37 | - "projectReferences": {} | ||
| 38 | - } | ||
| 39 | - }, | ||
| 40 | - "warningProperties": { | ||
| 41 | - "warnAsError": [ | ||
| 42 | - "NU1605" | ||
| 43 | - ] | ||
| 44 | - }, | ||
| 45 | - "restoreAuditProperties": { | ||
| 46 | - "enableAudit": "true", | ||
| 47 | - "auditLevel": "low", | ||
| 48 | - "auditMode": "direct" | ||
| 49 | - } | ||
| 50 | - }, | ||
| 51 | - "frameworks": { | ||
| 52 | - "net8.0": { | ||
| 53 | - "targetAlias": "net8.0", | ||
| 54 | - "dependencies": { | ||
| 55 | - "FreeSql": { | ||
| 56 | - "target": "Package", | ||
| 57 | - "version": "[3.2.821, )" | ||
| 58 | - }, | ||
| 59 | - "FreeSql.Provider.Sqlite": { | ||
| 60 | - "target": "Package", | ||
| 61 | - "version": "[3.2.821, )" | ||
| 62 | - }, | ||
| 63 | - "FreeSql.Repository": { | ||
| 64 | - "target": "Package", | ||
| 65 | - "version": "[3.2.821, )" | ||
| 66 | - }, | ||
| 67 | - "Swashbuckle.AspNetCore": { | ||
| 68 | - "target": "Package", | ||
| 69 | - "version": "[6.4.0, )" | ||
| 70 | - } | ||
| 71 | - }, | ||
| 72 | - "imports": [ | ||
| 73 | - "net461", | ||
| 74 | - "net462", | ||
| 75 | - "net47", | ||
| 76 | - "net471", | ||
| 77 | - "net472", | ||
| 78 | - "net48", | ||
| 79 | - "net481" | ||
| 80 | - ], | ||
| 81 | - "assetTargetFallback": true, | ||
| 82 | - "warn": true, | ||
| 83 | - "frameworkReferences": { | ||
| 84 | - "Microsoft.AspNetCore.App": { | ||
| 85 | - "privateAssets": "none" | ||
| 86 | - }, | ||
| 87 | - "Microsoft.NETCore.App": { | ||
| 88 | - "privateAssets": "all" | ||
| 89 | - } | ||
| 90 | - }, | ||
| 91 | - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.201/PortableRuntimeIdentifierGraph.json" | ||
| 92 | - } | ||
| 93 | - } | ||
| 94 | - } | ||
| 95 | - } | ||
| 96 | -} | ||
| 97 | \ No newline at end of file | 0 | \ No newline at end of file |
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/obj/Blueprint.Net.Server.csproj.nuget.g.props deleted
100644 → 0
| 1 | -<?xml version="1.0" encoding="utf-8" standalone="no"?> | ||
| 2 | -<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
| 3 | - <PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' "> | ||
| 4 | - <RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess> | ||
| 5 | - <RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool> | ||
| 6 | - <ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile> | ||
| 7 | - <NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot> | ||
| 8 | - <NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\anan\.nuget\packages\;C:\Users\anan\AppData\Roaming\Godot\mono\GodotNuGetFallbackFolder;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages</NuGetPackageFolders> | ||
| 9 | - <NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle> | ||
| 10 | - <NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.9.1</NuGetToolVersion> | ||
| 11 | - </PropertyGroup> | ||
| 12 | - <ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' "> | ||
| 13 | - <SourceRoot Include="C:\Users\anan\.nuget\packages\" /> | ||
| 14 | - <SourceRoot Include="C:\Users\anan\AppData\Roaming\Godot\mono\GodotNuGetFallbackFolder\" /> | ||
| 15 | - <SourceRoot Include="C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\" /> | ||
| 16 | - </ItemGroup> | ||
| 17 | - <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' "> | ||
| 18 | - <Import Project="$(NuGetPackageRoot)microsoft.extensions.apidescription.server\6.0.5\build\Microsoft.Extensions.ApiDescription.Server.props" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.apidescription.server\6.0.5\build\Microsoft.Extensions.ApiDescription.Server.props')" /> | ||
| 19 | - <Import Project="$(NuGetPackageRoot)swashbuckle.aspnetcore\6.4.0\build\Swashbuckle.AspNetCore.props" Condition="Exists('$(NuGetPackageRoot)swashbuckle.aspnetcore\6.4.0\build\Swashbuckle.AspNetCore.props')" /> | ||
| 20 | - </ImportGroup> | ||
| 21 | - <PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' "> | ||
| 22 | - <PkgMicrosoft_Extensions_ApiDescription_Server Condition=" '$(PkgMicrosoft_Extensions_ApiDescription_Server)' == '' ">C:\Users\anan\.nuget\packages\microsoft.extensions.apidescription.server\6.0.5</PkgMicrosoft_Extensions_ApiDescription_Server> | ||
| 23 | - </PropertyGroup> | ||
| 24 | -</Project> | ||
| 25 | \ No newline at end of file | 0 | \ No newline at end of file |
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/obj/Blueprint.Net.Server.csproj.nuget.g.targets deleted
100644 → 0
| 1 | -<?xml version="1.0" encoding="utf-8" standalone="no"?> | ||
| 2 | -<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
| 3 | - <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' "> | ||
| 4 | - <Import Project="$(NuGetPackageRoot)microsoft.extensions.apidescription.server\6.0.5\build\Microsoft.Extensions.ApiDescription.Server.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.apidescription.server\6.0.5\build\Microsoft.Extensions.ApiDescription.Server.targets')" /> | ||
| 5 | - </ImportGroup> | ||
| 6 | -</Project> | ||
| 7 | \ No newline at end of file | 0 | \ No newline at end of file |
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs deleted
100644 → 0
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/obj/Debug/net8.0/ApiEndpoints.json deleted
100644 → 0
| 1 | -[ | ||
| 2 | - { | ||
| 3 | - "ContainingType": "Blueprint.Net.Server.Controllers.BlueprintController", | ||
| 4 | - "Method": "DeleteCard", | ||
| 5 | - "RelativePath": "Blueprint/DeleteCard/{id}", | ||
| 6 | - "HttpMethod": "DELETE", | ||
| 7 | - "IsController": true, | ||
| 8 | - "Order": 0, | ||
| 9 | - "Parameters": [ | ||
| 10 | - { | ||
| 11 | - "Name": "id", | ||
| 12 | - "Type": "System.Int64", | ||
| 13 | - "IsRequired": true | ||
| 14 | - } | ||
| 15 | - ], | ||
| 16 | - "ReturnTypes": [] | ||
| 17 | - }, | ||
| 18 | - { | ||
| 19 | - "ContainingType": "Blueprint.Net.Server.Controllers.BlueprintController", | ||
| 20 | - "Method": "DeleteLink", | ||
| 21 | - "RelativePath": "Blueprint/DeleteLink/{id}", | ||
| 22 | - "HttpMethod": "DELETE", | ||
| 23 | - "IsController": true, | ||
| 24 | - "Order": 0, | ||
| 25 | - "Parameters": [ | ||
| 26 | - { | ||
| 27 | - "Name": "id", | ||
| 28 | - "Type": "System.Int64", | ||
| 29 | - "IsRequired": true | ||
| 30 | - } | ||
| 31 | - ], | ||
| 32 | - "ReturnTypes": [] | ||
| 33 | - }, | ||
| 34 | - { | ||
| 35 | - "ContainingType": "Blueprint.Net.Server.Controllers.BlueprintController", | ||
| 36 | - "Method": "DeleteProject", | ||
| 37 | - "RelativePath": "Blueprint/DeleteProject/{id}", | ||
| 38 | - "HttpMethod": "DELETE", | ||
| 39 | - "IsController": true, | ||
| 40 | - "Order": 0, | ||
| 41 | - "Parameters": [ | ||
| 42 | - { | ||
| 43 | - "Name": "id", | ||
| 44 | - "Type": "System.Int64", | ||
| 45 | - "IsRequired": true | ||
| 46 | - } | ||
| 47 | - ], | ||
| 48 | - "ReturnTypes": [] | ||
| 49 | - }, | ||
| 50 | - { | ||
| 51 | - "ContainingType": "Blueprint.Net.Server.Controllers.BlueprintController", | ||
| 52 | - "Method": "DeleteWorkspace", | ||
| 53 | - "RelativePath": "Blueprint/DeleteWorkspace/{id}", | ||
| 54 | - "HttpMethod": "DELETE", | ||
| 55 | - "IsController": true, | ||
| 56 | - "Order": 0, | ||
| 57 | - "Parameters": [ | ||
| 58 | - { | ||
| 59 | - "Name": "id", | ||
| 60 | - "Type": "System.Int64", | ||
| 61 | - "IsRequired": true | ||
| 62 | - } | ||
| 63 | - ], | ||
| 64 | - "ReturnTypes": [] | ||
| 65 | - }, | ||
| 66 | - { | ||
| 67 | - "ContainingType": "Blueprint.Net.Server.Controllers.BlueprintController", | ||
| 68 | - "Method": "GetProjects", | ||
| 69 | - "RelativePath": "Blueprint/GetProjects", | ||
| 70 | - "HttpMethod": "GET", | ||
| 71 | - "IsController": true, | ||
| 72 | - "Order": 0, | ||
| 73 | - "Parameters": [], | ||
| 74 | - "ReturnTypes": [ | ||
| 75 | - { | ||
| 76 | - "Type": "System.Collections.Generic.IEnumerable\u00601[[Blueprint.Net.Server.Project, Blueprint.Net.Server, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]", | ||
| 77 | - "MediaTypes": [ | ||
| 78 | - "text/plain", | ||
| 79 | - "application/json", | ||
| 80 | - "text/json" | ||
| 81 | - ], | ||
| 82 | - "StatusCode": 200 | ||
| 83 | - } | ||
| 84 | - ] | ||
| 85 | - }, | ||
| 86 | - { | ||
| 87 | - "ContainingType": "Blueprint.Net.Server.Controllers.BlueprintController", | ||
| 88 | - "Method": "Project", | ||
| 89 | - "RelativePath": "Blueprint/Project", | ||
| 90 | - "HttpMethod": "POST", | ||
| 91 | - "IsController": true, | ||
| 92 | - "Order": 0, | ||
| 93 | - "Parameters": [ | ||
| 94 | - { | ||
| 95 | - "Name": "project", | ||
| 96 | - "Type": "Blueprint.Net.Server.Project", | ||
| 97 | - "IsRequired": true | ||
| 98 | - } | ||
| 99 | - ], | ||
| 100 | - "ReturnTypes": [ | ||
| 101 | - { | ||
| 102 | - "Type": "Blueprint.Net.Server.Project", | ||
| 103 | - "MediaTypes": [ | ||
| 104 | - "text/plain", | ||
| 105 | - "application/json", | ||
| 106 | - "text/json" | ||
| 107 | - ], | ||
| 108 | - "StatusCode": 200 | ||
| 109 | - } | ||
| 110 | - ] | ||
| 111 | - } | ||
| 112 | -] | ||
| 113 | \ No newline at end of file | 0 | \ No newline at end of file |
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/obj/Debug/net8.0/Blueprin.F6C0E272.Up2Date deleted
100644 → 0
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/obj/Debug/net8.0/Blueprint.Net.Server.AssemblyInfo.cs deleted
100644 → 0
| 1 | -//------------------------------------------------------------------------------ | ||
| 2 | -// <auto-generated> | ||
| 3 | -// This code was generated by a tool. | ||
| 4 | -// | ||
| 5 | -// Changes to this file may cause incorrect behavior and will be lost if | ||
| 6 | -// the code is regenerated. | ||
| 7 | -// </auto-generated> | ||
| 8 | -//------------------------------------------------------------------------------ | ||
| 9 | - | ||
| 10 | -using System; | ||
| 11 | -using System.Reflection; | ||
| 12 | - | ||
| 13 | -[assembly: System.Reflection.AssemblyCompanyAttribute("Blueprint.Net.Server")] | ||
| 14 | -[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] | ||
| 15 | -[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] | ||
| 16 | -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+21310e5f9b84d697cb0feff5b5ab032eedbd8151")] | ||
| 17 | -[assembly: System.Reflection.AssemblyProductAttribute("Blueprint.Net.Server")] | ||
| 18 | -[assembly: System.Reflection.AssemblyTitleAttribute("Blueprint.Net.Server")] | ||
| 19 | -[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] | ||
| 20 | - | ||
| 21 | -// 由 MSBuild WriteCodeFragment 类生成。 | ||
| 22 | - |
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/obj/Debug/net8.0/Blueprint.Net.Server.AssemblyInfoInputs.cache deleted
100644 → 0
| 1 | -5eddb37dc7a53e4fa87096743c7acd0b6360a57b70e21a4550930a7499bb9c12 |
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/obj/Debug/net8.0/Blueprint.Net.Server.GeneratedMSBuildEditorConfig.editorconfig deleted
100644 → 0
| 1 | -is_global = true | ||
| 2 | -build_property.TargetFramework = net8.0 | ||
| 3 | -build_property.TargetPlatformMinVersion = | ||
| 4 | -build_property.UsingMicrosoftNETSdkWeb = true | ||
| 5 | -build_property.ProjectTypeGuids = | ||
| 6 | -build_property.InvariantGlobalization = | ||
| 7 | -build_property.PlatformNeutralAssembly = | ||
| 8 | -build_property.EnforceExtendedAnalyzerRules = | ||
| 9 | -build_property._SupportedPlatformList = Linux,macOS,Windows | ||
| 10 | -build_property.RootNamespace = Blueprint.Net.Server | ||
| 11 | -build_property.RootNamespace = Blueprint.Net.Server | ||
| 12 | -build_property.ProjectDir = E:\Code\Blueprint\Blueprint.Net.Server\ | ||
| 13 | -build_property.EnableComHosting = | ||
| 14 | -build_property.EnableGeneratedComInterfaceComImportInterop = | ||
| 15 | -build_property.RazorLangVersion = 8.0 | ||
| 16 | -build_property.SupportLocalizedComponentNames = | ||
| 17 | -build_property.GenerateRazorMetadataSourceChecksumAttributes = | ||
| 18 | -build_property.MSBuildProjectDirectory = E:\Code\Blueprint\Blueprint.Net.Server | ||
| 19 | -build_property._RazorSourceGeneratorDebug = |
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/obj/Debug/net8.0/Blueprint.Net.Server.GlobalUsings.g.cs deleted
100644 → 0
| 1 | -// <auto-generated/> | ||
| 2 | -global using global::Microsoft.AspNetCore.Builder; | ||
| 3 | -global using global::Microsoft.AspNetCore.Hosting; | ||
| 4 | -global using global::Microsoft.AspNetCore.Http; | ||
| 5 | -global using global::Microsoft.AspNetCore.Routing; | ||
| 6 | -global using global::Microsoft.Extensions.Configuration; | ||
| 7 | -global using global::Microsoft.Extensions.DependencyInjection; | ||
| 8 | -global using global::Microsoft.Extensions.Hosting; | ||
| 9 | -global using global::Microsoft.Extensions.Logging; | ||
| 10 | -global using global::System; | ||
| 11 | -global using global::System.Collections.Generic; | ||
| 12 | -global using global::System.IO; | ||
| 13 | -global using global::System.Linq; | ||
| 14 | -global using global::System.Net.Http; | ||
| 15 | -global using global::System.Net.Http.Json; | ||
| 16 | -global using global::System.Threading; | ||
| 17 | -global using global::System.Threading.Tasks; |
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/obj/Debug/net8.0/Blueprint.Net.Server.MvcApplicationPartsAssemblyInfo.cache deleted
100644 → 0
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/obj/Debug/net8.0/Blueprint.Net.Server.MvcApplicationPartsAssemblyInfo.cs deleted
100644 → 0
| 1 | -//------------------------------------------------------------------------------ | ||
| 2 | -// <auto-generated> | ||
| 3 | -// 此代码由工具生成。 | ||
| 4 | -// 运行时版本:4.0.30319.42000 | ||
| 5 | -// | ||
| 6 | -// 对此文件的更改可能会导致不正确的行为,并且如果 | ||
| 7 | -// 重新生成代码,这些更改将会丢失。 | ||
| 8 | -// </auto-generated> | ||
| 9 | -//------------------------------------------------------------------------------ | ||
| 10 | - | ||
| 11 | -using System; | ||
| 12 | -using System.Reflection; | ||
| 13 | - | ||
| 14 | -[assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartAttribute("Swashbuckle.AspNetCore.SwaggerGen")] | ||
| 15 | - | ||
| 16 | -// 由 MSBuild WriteCodeFragment 类生成。 | ||
| 17 | - |
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/obj/Debug/net8.0/Blueprint.Net.Server.assets.cache deleted
100644 → 0
No preview for this file type
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/obj/Debug/net8.0/Blueprint.Net.Server.csproj.AssemblyReference.cache deleted
100644 → 0
No preview for this file type
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/obj/Debug/net8.0/Blueprint.Net.Server.csproj.BuildWithSkipAnalyzers deleted
100644 → 0
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/obj/Debug/net8.0/Blueprint.Net.Server.csproj.CoreCompileInputs.cache deleted
100644 → 0
| 1 | -e6649176d8592337858ccf92973fd389b3d88f5441cf720c89972060326574ca |
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/obj/Debug/net8.0/Blueprint.Net.Server.csproj.FileListAbsolute.txt deleted
100644 → 0
| 1 | -E:\Code\Blueprint\Blueprint.Net.Server\obj\Debug\net8.0\Blueprint.Net.Server.csproj.AssemblyReference.cache | ||
| 2 | -E:\Code\Blueprint\Blueprint.Net.Server\obj\Debug\net8.0\Blueprint.Net.Server.GeneratedMSBuildEditorConfig.editorconfig | ||
| 3 | -E:\Code\Blueprint\Blueprint.Net.Server\obj\Debug\net8.0\Blueprint.Net.Server.AssemblyInfoInputs.cache | ||
| 4 | -E:\Code\Blueprint\Blueprint.Net.Server\obj\Debug\net8.0\Blueprint.Net.Server.AssemblyInfo.cs | ||
| 5 | -E:\Code\Blueprint\Blueprint.Net.Server\obj\Debug\net8.0\Blueprint.Net.Server.csproj.CoreCompileInputs.cache | ||
| 6 | -E:\Code\Blueprint\Blueprint.Net.Server\obj\Debug\net8.0\Blueprint.Net.Server.MvcApplicationPartsAssemblyInfo.cs | ||
| 7 | -E:\Code\Blueprint\Blueprint.Net.Server\obj\Debug\net8.0\Blueprint.Net.Server.MvcApplicationPartsAssemblyInfo.cache | ||
| 8 | -E:\Code\Blueprint\Blueprint.Net.Server\obj\Debug\net8.0\Blueprint.Net.Server.sourcelink.json | ||
| 9 | -E:\Code\Blueprint\Blueprint.Net.Server\bin\Debug\net8.0\appsettings.Development.json | ||
| 10 | -E:\Code\Blueprint\Blueprint.Net.Server\bin\Debug\net8.0\appsettings.json | ||
| 11 | -E:\Code\Blueprint\Blueprint.Net.Server\bin\Debug\net8.0\Blueprint.Net.Server.exe | ||
| 12 | -E:\Code\Blueprint\Blueprint.Net.Server\bin\Debug\net8.0\Blueprint.Net.Server.deps.json | ||
| 13 | -E:\Code\Blueprint\Blueprint.Net.Server\bin\Debug\net8.0\Blueprint.Net.Server.runtimeconfig.json | ||
| 14 | -E:\Code\Blueprint\Blueprint.Net.Server\bin\Debug\net8.0\Blueprint.Net.Server.dll | ||
| 15 | -E:\Code\Blueprint\Blueprint.Net.Server\bin\Debug\net8.0\Blueprint.Net.Server.pdb | ||
| 16 | -E:\Code\Blueprint\Blueprint.Net.Server\bin\Debug\net8.0\FreeSql.dll | ||
| 17 | -E:\Code\Blueprint\Blueprint.Net.Server\bin\Debug\net8.0\FreeSql.Provider.Sqlite.dll | ||
| 18 | -E:\Code\Blueprint\Blueprint.Net.Server\bin\Debug\net8.0\Microsoft.OpenApi.dll | ||
| 19 | -E:\Code\Blueprint\Blueprint.Net.Server\bin\Debug\net8.0\System.Data.SQLite.dll | ||
| 20 | -E:\Code\Blueprint\Blueprint.Net.Server\bin\Debug\net8.0\Swashbuckle.AspNetCore.Swagger.dll | ||
| 21 | -E:\Code\Blueprint\Blueprint.Net.Server\bin\Debug\net8.0\Swashbuckle.AspNetCore.SwaggerGen.dll | ||
| 22 | -E:\Code\Blueprint\Blueprint.Net.Server\bin\Debug\net8.0\Swashbuckle.AspNetCore.SwaggerUI.dll | ||
| 23 | -E:\Code\Blueprint\Blueprint.Net.Server\bin\Debug\net8.0\zh-Hans\FreeSql.resources.dll | ||
| 24 | -E:\Code\Blueprint\Blueprint.Net.Server\bin\Debug\net8.0\runtimes\linux-x64\native\SQLite.Interop.dll | ||
| 25 | -E:\Code\Blueprint\Blueprint.Net.Server\bin\Debug\net8.0\runtimes\osx-x64\native\SQLite.Interop.dll | ||
| 26 | -E:\Code\Blueprint\Blueprint.Net.Server\bin\Debug\net8.0\runtimes\win-x64\native\SQLite.Interop.dll | ||
| 27 | -E:\Code\Blueprint\Blueprint.Net.Server\bin\Debug\net8.0\runtimes\win-x86\native\SQLite.Interop.dll | ||
| 28 | -E:\Code\Blueprint\Blueprint.Net.Server\obj\Debug\net8.0\staticwebassets.build.json | ||
| 29 | -E:\Code\Blueprint\Blueprint.Net.Server\obj\Debug\net8.0\staticwebassets.development.json | ||
| 30 | -E:\Code\Blueprint\Blueprint.Net.Server\obj\Debug\net8.0\staticwebassets\msbuild.Blueprint.Net.Server.Microsoft.AspNetCore.StaticWebAssets.props | ||
| 31 | -E:\Code\Blueprint\Blueprint.Net.Server\obj\Debug\net8.0\staticwebassets\msbuild.build.Blueprint.Net.Server.props | ||
| 32 | -E:\Code\Blueprint\Blueprint.Net.Server\obj\Debug\net8.0\staticwebassets\msbuild.buildMultiTargeting.Blueprint.Net.Server.props | ||
| 33 | -E:\Code\Blueprint\Blueprint.Net.Server\obj\Debug\net8.0\staticwebassets\msbuild.buildTransitive.Blueprint.Net.Server.props | ||
| 34 | -E:\Code\Blueprint\Blueprint.Net.Server\obj\Debug\net8.0\staticwebassets.pack.json | ||
| 35 | -E:\Code\Blueprint\Blueprint.Net.Server\obj\Debug\net8.0\scopedcss\bundle\Blueprint.Net.Server.styles.css | ||
| 36 | -E:\Code\Blueprint\Blueprint.Net.Server\obj\Debug\net8.0\Blueprin.F6C0E272.Up2Date | ||
| 37 | -E:\Code\Blueprint\Blueprint.Net.Server\obj\Debug\net8.0\Blueprint.Net.Server.dll | ||
| 38 | -E:\Code\Blueprint\Blueprint.Net.Server\obj\Debug\net8.0\refint\Blueprint.Net.Server.dll | ||
| 39 | -E:\Code\Blueprint\Blueprint.Net.Server\obj\Debug\net8.0\Blueprint.Net.Server.pdb | ||
| 40 | -E:\Code\Blueprint\Blueprint.Net.Server\obj\Debug\net8.0\Blueprint.Net.Server.genruntimeconfig.cache | ||
| 41 | -E:\Code\Blueprint\Blueprint.Net.Server\obj\Debug\net8.0\ref\Blueprint.Net.Server.dll | ||
| 42 | -E:\Code\Blueprint\Blueprint.Net.Server\bin\Debug\net8.0\FreeSql.DbContext.dll | ||
| 43 | -E:\Code\Blueprint\Blueprint.Net.Server\bin\Debug\net8.0\FreeSql.Repository.dll | ||
| 44 | -E:\Code\Blueprint\Blueprint.Net.Server\bin\Debug\net8.0\zh-Hans\FreeSql.DbContext.resources.dll | ||
| 45 | -E:\Code\Blueprint\Blueprint.Net.Server\bin\Debug\net8.0\Blueprint.Net.Server.staticwebassets.runtime.json |
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/obj/Debug/net8.0/Blueprint.Net.Server.dll deleted
100644 → 0
No preview for this file type
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/obj/Debug/net8.0/Blueprint.Net.Server.genruntimeconfig.cache deleted
100644 → 0
| 1 | -8acfbde84a0808a05ea09472133bf8a326d26f20e0ddb65a94244d389946671b |
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/obj/Debug/net8.0/Blueprint.Net.Server.pdb deleted
100644 → 0
No preview for this file type
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/obj/Debug/net8.0/Blueprint.Net.Server.sourcelink.json deleted
100644 → 0
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/obj/Debug/net8.0/apphost.exe deleted
100644 → 0
No preview for this file type
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/obj/Debug/net8.0/ref/Blueprint.Net.Server.dll deleted
100644 → 0
No preview for this file type
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/obj/Debug/net8.0/refint/Blueprint.Net.Server.dll deleted
100644 → 0
No preview for this file type
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/obj/Debug/net8.0/staticwebassets.build.json deleted
100644 → 0
| 1 | -{ | ||
| 2 | - "Version": 1, | ||
| 3 | - "Hash": "Pejh5880OWDtzUDeaYI0R3uZI5plIRGeOY+LIYo1sp8=", | ||
| 4 | - "Source": "Blueprint.Net.Server", | ||
| 5 | - "BasePath": "_content/Blueprint.Net.Server", | ||
| 6 | - "Mode": "Default", | ||
| 7 | - "ManifestType": "Build", | ||
| 8 | - "ReferencedProjectsConfiguration": [], | ||
| 9 | - "DiscoveryPatterns": [ | ||
| 10 | - { | ||
| 11 | - "Name": "Blueprint.Net.Server\\wwwroot", | ||
| 12 | - "Source": "Blueprint.Net.Server", | ||
| 13 | - "ContentRoot": "E:\\Code\\Blueprint\\Blueprint.Net.Server\\wwwroot\\", | ||
| 14 | - "BasePath": "_content/Blueprint.Net.Server", | ||
| 15 | - "Pattern": "**" | ||
| 16 | - } | ||
| 17 | - ], | ||
| 18 | - "Assets": [ | ||
| 19 | - { | ||
| 20 | - "Identity": "E:\\Code\\Blueprint\\Blueprint.Net.Server\\wwwroot\\index.html", | ||
| 21 | - "SourceId": "Blueprint.Net.Server", | ||
| 22 | - "SourceType": "Discovered", | ||
| 23 | - "ContentRoot": "E:\\Code\\Blueprint\\Blueprint.Net.Server\\wwwroot\\", | ||
| 24 | - "BasePath": "_content/Blueprint.Net.Server", | ||
| 25 | - "RelativePath": "index.html", | ||
| 26 | - "AssetKind": "All", | ||
| 27 | - "AssetMode": "All", | ||
| 28 | - "AssetRole": "Primary", | ||
| 29 | - "AssetMergeBehavior": "PreferTarget", | ||
| 30 | - "AssetMergeSource": "", | ||
| 31 | - "RelatedAsset": "", | ||
| 32 | - "AssetTraitName": "", | ||
| 33 | - "AssetTraitValue": "", | ||
| 34 | - "CopyToOutputDirectory": "Never", | ||
| 35 | - "CopyToPublishDirectory": "PreserveNewest", | ||
| 36 | - "OriginalItemSpec": "wwwroot\\index.html" | ||
| 37 | - } | ||
| 38 | - ] | ||
| 39 | -} | ||
| 40 | \ No newline at end of file | 0 | \ No newline at end of file |
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/obj/Debug/net8.0/staticwebassets.development.json deleted
100644 → 0
| 1 | -{"ContentRoots":["E:\\Code\\Blueprint\\Blueprint.Net.Server\\wwwroot\\"],"Root":{"Children":{"index.html":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"index.html"},"Patterns":null}},"Asset":null,"Patterns":[{"ContentRootIndex":0,"Pattern":"**","Depth":0}]}} | ||
| 2 | \ No newline at end of file | 0 | \ No newline at end of file |
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/obj/Debug/net8.0/staticwebassets.pack.json deleted
100644 → 0
| 1 | -{ | ||
| 2 | - "Files": [ | ||
| 3 | - { | ||
| 4 | - "Id": "E:\\Code\\Blueprint\\Blueprint.Net.Server\\wwwroot\\index.html", | ||
| 5 | - "PackagePath": "staticwebassets\\index.html" | ||
| 6 | - }, | ||
| 7 | - { | ||
| 8 | - "Id": "obj\\Debug\\net8.0\\staticwebassets\\msbuild.Blueprint.Net.Server.Microsoft.AspNetCore.StaticWebAssets.props", | ||
| 9 | - "PackagePath": "build\\Microsoft.AspNetCore.StaticWebAssets.props" | ||
| 10 | - }, | ||
| 11 | - { | ||
| 12 | - "Id": "obj\\Debug\\net8.0\\staticwebassets\\msbuild.build.Blueprint.Net.Server.props", | ||
| 13 | - "PackagePath": "build\\Blueprint.Net.Server.props" | ||
| 14 | - }, | ||
| 15 | - { | ||
| 16 | - "Id": "obj\\Debug\\net8.0\\staticwebassets\\msbuild.buildMultiTargeting.Blueprint.Net.Server.props", | ||
| 17 | - "PackagePath": "buildMultiTargeting\\Blueprint.Net.Server.props" | ||
| 18 | - }, | ||
| 19 | - { | ||
| 20 | - "Id": "obj\\Debug\\net8.0\\staticwebassets\\msbuild.buildTransitive.Blueprint.Net.Server.props", | ||
| 21 | - "PackagePath": "buildTransitive\\Blueprint.Net.Server.props" | ||
| 22 | - } | ||
| 23 | - ], | ||
| 24 | - "ElementsToRemove": [] | ||
| 25 | -} | ||
| 26 | \ No newline at end of file | 0 | \ No newline at end of file |
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/obj/Debug/net8.0/staticwebassets/msbuild.Blueprint.Net.Server.Microsoft.AspNetCore.StaticWebAssets.props deleted
100644 → 0
| 1 | -<Project> | ||
| 2 | - <ItemGroup> | ||
| 3 | - <StaticWebAsset Include="$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\index.html))"> | ||
| 4 | - <SourceType>Package</SourceType> | ||
| 5 | - <SourceId>Blueprint.Net.Server</SourceId> | ||
| 6 | - <ContentRoot>$(MSBuildThisFileDirectory)..\staticwebassets\</ContentRoot> | ||
| 7 | - <BasePath>_content/Blueprint.Net.Server</BasePath> | ||
| 8 | - <RelativePath>index.html</RelativePath> | ||
| 9 | - <AssetKind>All</AssetKind> | ||
| 10 | - <AssetMode>All</AssetMode> | ||
| 11 | - <AssetRole>Primary</AssetRole> | ||
| 12 | - <RelatedAsset></RelatedAsset> | ||
| 13 | - <AssetTraitName></AssetTraitName> | ||
| 14 | - <AssetTraitValue></AssetTraitValue> | ||
| 15 | - <CopyToOutputDirectory>Never</CopyToOutputDirectory> | ||
| 16 | - <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> | ||
| 17 | - <OriginalItemSpec>$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\index.html))</OriginalItemSpec> | ||
| 18 | - </StaticWebAsset> | ||
| 19 | - </ItemGroup> | ||
| 20 | -</Project> | ||
| 21 | \ No newline at end of file | 0 | \ No newline at end of file |
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/obj/Debug/net8.0/staticwebassets/msbuild.build.Blueprint.Net.Server.props deleted
100644 → 0
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/obj/Debug/net8.0/staticwebassets/msbuild.buildMultiTargeting.Blueprint.Net.Server.props deleted
100644 → 0
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/obj/Debug/net8.0/staticwebassets/msbuild.buildTransitive.Blueprint.Net.Server.props deleted
100644 → 0
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/obj/project.assets.json deleted
100644 → 0
| 1 | -{ | ||
| 2 | - "version": 3, | ||
| 3 | - "targets": { | ||
| 4 | - "net8.0": { | ||
| 5 | - "FreeSql/3.2.821": { | ||
| 6 | - "type": "package", | ||
| 7 | - "compile": { | ||
| 8 | - "lib/netstandard2.1/FreeSql.dll": { | ||
| 9 | - "related": ".pdb;.xml" | ||
| 10 | - } | ||
| 11 | - }, | ||
| 12 | - "runtime": { | ||
| 13 | - "lib/netstandard2.1/FreeSql.dll": { | ||
| 14 | - "related": ".pdb;.xml" | ||
| 15 | - } | ||
| 16 | - }, | ||
| 17 | - "resource": { | ||
| 18 | - "lib/netstandard2.1/zh-Hans/FreeSql.resources.dll": { | ||
| 19 | - "locale": "zh-Hans" | ||
| 20 | - } | ||
| 21 | - } | ||
| 22 | - }, | ||
| 23 | - "FreeSql.DbContext/3.2.821": { | ||
| 24 | - "type": "package", | ||
| 25 | - "dependencies": { | ||
| 26 | - "FreeSql": "3.2.821", | ||
| 27 | - "Microsoft.Extensions.DependencyInjection": "8.0.0" | ||
| 28 | - }, | ||
| 29 | - "compile": { | ||
| 30 | - "lib/net8.0/FreeSql.DbContext.dll": { | ||
| 31 | - "related": ".pdb;.xml" | ||
| 32 | - } | ||
| 33 | - }, | ||
| 34 | - "runtime": { | ||
| 35 | - "lib/net8.0/FreeSql.DbContext.dll": { | ||
| 36 | - "related": ".pdb;.xml" | ||
| 37 | - } | ||
| 38 | - }, | ||
| 39 | - "resource": { | ||
| 40 | - "lib/net8.0/zh-Hans/FreeSql.DbContext.resources.dll": { | ||
| 41 | - "locale": "zh-Hans" | ||
| 42 | - } | ||
| 43 | - } | ||
| 44 | - }, | ||
| 45 | - "FreeSql.Provider.Sqlite/3.2.821": { | ||
| 46 | - "type": "package", | ||
| 47 | - "dependencies": { | ||
| 48 | - "FreeSql": "3.2.821", | ||
| 49 | - "System.Data.SQLite.Core": "1.0.115.5" | ||
| 50 | - }, | ||
| 51 | - "compile": { | ||
| 52 | - "lib/netstandard2.0/FreeSql.Provider.Sqlite.dll": { | ||
| 53 | - "related": ".pdb" | ||
| 54 | - } | ||
| 55 | - }, | ||
| 56 | - "runtime": { | ||
| 57 | - "lib/netstandard2.0/FreeSql.Provider.Sqlite.dll": { | ||
| 58 | - "related": ".pdb" | ||
| 59 | - } | ||
| 60 | - } | ||
| 61 | - }, | ||
| 62 | - "FreeSql.Repository/3.2.821": { | ||
| 63 | - "type": "package", | ||
| 64 | - "dependencies": { | ||
| 65 | - "FreeSql.DbContext": "3.2.821" | ||
| 66 | - }, | ||
| 67 | - "compile": { | ||
| 68 | - "lib/net8.0/FreeSql.Repository.dll": { | ||
| 69 | - "related": ".pdb" | ||
| 70 | - } | ||
| 71 | - }, | ||
| 72 | - "runtime": { | ||
| 73 | - "lib/net8.0/FreeSql.Repository.dll": { | ||
| 74 | - "related": ".pdb" | ||
| 75 | - } | ||
| 76 | - } | ||
| 77 | - }, | ||
| 78 | - "Microsoft.Extensions.ApiDescription.Server/6.0.5": { | ||
| 79 | - "type": "package", | ||
| 80 | - "build": { | ||
| 81 | - "build/Microsoft.Extensions.ApiDescription.Server.props": {}, | ||
| 82 | - "build/Microsoft.Extensions.ApiDescription.Server.targets": {} | ||
| 83 | - }, | ||
| 84 | - "buildMultiTargeting": { | ||
| 85 | - "buildMultiTargeting/Microsoft.Extensions.ApiDescription.Server.props": {}, | ||
| 86 | - "buildMultiTargeting/Microsoft.Extensions.ApiDescription.Server.targets": {} | ||
| 87 | - } | ||
| 88 | - }, | ||
| 89 | - "Microsoft.Extensions.DependencyInjection/8.0.0": { | ||
| 90 | - "type": "package", | ||
| 91 | - "dependencies": { | ||
| 92 | - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0" | ||
| 93 | - }, | ||
| 94 | - "compile": { | ||
| 95 | - "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { | ||
| 96 | - "related": ".xml" | ||
| 97 | - } | ||
| 98 | - }, | ||
| 99 | - "runtime": { | ||
| 100 | - "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { | ||
| 101 | - "related": ".xml" | ||
| 102 | - } | ||
| 103 | - }, | ||
| 104 | - "build": { | ||
| 105 | - "buildTransitive/net6.0/_._": {} | ||
| 106 | - } | ||
| 107 | - }, | ||
| 108 | - "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.0": { | ||
| 109 | - "type": "package", | ||
| 110 | - "compile": { | ||
| 111 | - "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { | ||
| 112 | - "related": ".xml" | ||
| 113 | - } | ||
| 114 | - }, | ||
| 115 | - "runtime": { | ||
| 116 | - "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { | ||
| 117 | - "related": ".xml" | ||
| 118 | - } | ||
| 119 | - }, | ||
| 120 | - "build": { | ||
| 121 | - "buildTransitive/net6.0/_._": {} | ||
| 122 | - } | ||
| 123 | - }, | ||
| 124 | - "Microsoft.OpenApi/1.2.3": { | ||
| 125 | - "type": "package", | ||
| 126 | - "compile": { | ||
| 127 | - "lib/netstandard2.0/Microsoft.OpenApi.dll": { | ||
| 128 | - "related": ".pdb;.xml" | ||
| 129 | - } | ||
| 130 | - }, | ||
| 131 | - "runtime": { | ||
| 132 | - "lib/netstandard2.0/Microsoft.OpenApi.dll": { | ||
| 133 | - "related": ".pdb;.xml" | ||
| 134 | - } | ||
| 135 | - } | ||
| 136 | - }, | ||
| 137 | - "Stub.System.Data.SQLite.Core.NetStandard/1.0.115.5": { | ||
| 138 | - "type": "package", | ||
| 139 | - "compile": { | ||
| 140 | - "lib/netstandard2.1/System.Data.SQLite.dll": { | ||
| 141 | - "related": ".dll.altconfig;.xml" | ||
| 142 | - } | ||
| 143 | - }, | ||
| 144 | - "runtime": { | ||
| 145 | - "lib/netstandard2.1/System.Data.SQLite.dll": { | ||
| 146 | - "related": ".dll.altconfig;.xml" | ||
| 147 | - } | ||
| 148 | - }, | ||
| 149 | - "runtimeTargets": { | ||
| 150 | - "runtimes/linux-x64/native/SQLite.Interop.dll": { | ||
| 151 | - "assetType": "native", | ||
| 152 | - "rid": "linux-x64" | ||
| 153 | - }, | ||
| 154 | - "runtimes/osx-x64/native/SQLite.Interop.dll": { | ||
| 155 | - "assetType": "native", | ||
| 156 | - "rid": "osx-x64" | ||
| 157 | - }, | ||
| 158 | - "runtimes/win-x64/native/SQLite.Interop.dll": { | ||
| 159 | - "assetType": "native", | ||
| 160 | - "rid": "win-x64" | ||
| 161 | - }, | ||
| 162 | - "runtimes/win-x86/native/SQLite.Interop.dll": { | ||
| 163 | - "assetType": "native", | ||
| 164 | - "rid": "win-x86" | ||
| 165 | - } | ||
| 166 | - } | ||
| 167 | - }, | ||
| 168 | - "Swashbuckle.AspNetCore/6.4.0": { | ||
| 169 | - "type": "package", | ||
| 170 | - "dependencies": { | ||
| 171 | - "Microsoft.Extensions.ApiDescription.Server": "6.0.5", | ||
| 172 | - "Swashbuckle.AspNetCore.Swagger": "6.4.0", | ||
| 173 | - "Swashbuckle.AspNetCore.SwaggerGen": "6.4.0", | ||
| 174 | - "Swashbuckle.AspNetCore.SwaggerUI": "6.4.0" | ||
| 175 | - }, | ||
| 176 | - "build": { | ||
| 177 | - "build/Swashbuckle.AspNetCore.props": {} | ||
| 178 | - } | ||
| 179 | - }, | ||
| 180 | - "Swashbuckle.AspNetCore.Swagger/6.4.0": { | ||
| 181 | - "type": "package", | ||
| 182 | - "dependencies": { | ||
| 183 | - "Microsoft.OpenApi": "1.2.3" | ||
| 184 | - }, | ||
| 185 | - "compile": { | ||
| 186 | - "lib/net6.0/Swashbuckle.AspNetCore.Swagger.dll": { | ||
| 187 | - "related": ".pdb;.xml" | ||
| 188 | - } | ||
| 189 | - }, | ||
| 190 | - "runtime": { | ||
| 191 | - "lib/net6.0/Swashbuckle.AspNetCore.Swagger.dll": { | ||
| 192 | - "related": ".pdb;.xml" | ||
| 193 | - } | ||
| 194 | - }, | ||
| 195 | - "frameworkReferences": [ | ||
| 196 | - "Microsoft.AspNetCore.App" | ||
| 197 | - ] | ||
| 198 | - }, | ||
| 199 | - "Swashbuckle.AspNetCore.SwaggerGen/6.4.0": { | ||
| 200 | - "type": "package", | ||
| 201 | - "dependencies": { | ||
| 202 | - "Swashbuckle.AspNetCore.Swagger": "6.4.0" | ||
| 203 | - }, | ||
| 204 | - "compile": { | ||
| 205 | - "lib/net6.0/Swashbuckle.AspNetCore.SwaggerGen.dll": { | ||
| 206 | - "related": ".pdb;.xml" | ||
| 207 | - } | ||
| 208 | - }, | ||
| 209 | - "runtime": { | ||
| 210 | - "lib/net6.0/Swashbuckle.AspNetCore.SwaggerGen.dll": { | ||
| 211 | - "related": ".pdb;.xml" | ||
| 212 | - } | ||
| 213 | - } | ||
| 214 | - }, | ||
| 215 | - "Swashbuckle.AspNetCore.SwaggerUI/6.4.0": { | ||
| 216 | - "type": "package", | ||
| 217 | - "compile": { | ||
| 218 | - "lib/net6.0/Swashbuckle.AspNetCore.SwaggerUI.dll": { | ||
| 219 | - "related": ".pdb;.xml" | ||
| 220 | - } | ||
| 221 | - }, | ||
| 222 | - "runtime": { | ||
| 223 | - "lib/net6.0/Swashbuckle.AspNetCore.SwaggerUI.dll": { | ||
| 224 | - "related": ".pdb;.xml" | ||
| 225 | - } | ||
| 226 | - }, | ||
| 227 | - "frameworkReferences": [ | ||
| 228 | - "Microsoft.AspNetCore.App" | ||
| 229 | - ] | ||
| 230 | - }, | ||
| 231 | - "System.Data.SQLite.Core/1.0.115.5": { | ||
| 232 | - "type": "package", | ||
| 233 | - "dependencies": { | ||
| 234 | - "Stub.System.Data.SQLite.Core.NetStandard": "[1.0.115.5]" | ||
| 235 | - } | ||
| 236 | - } | ||
| 237 | - } | ||
| 238 | - }, | ||
| 239 | - "libraries": { | ||
| 240 | - "FreeSql/3.2.821": { | ||
| 241 | - "sha512": "bI/CTioEq4B9k5pqaZnXBSyJCIbHoUUTJGgQJF5osgq7/9kOxZo93hmZr8Vw6n5iFG5chx6wkcn4dnJJUsAEkA==", | ||
| 242 | - "type": "package", | ||
| 243 | - "path": "freesql/3.2.821", | ||
| 244 | - "files": [ | ||
| 245 | - ".nupkg.metadata", | ||
| 246 | - ".signature.p7s", | ||
| 247 | - "freesql.3.2.821.nupkg.sha512", | ||
| 248 | - "freesql.nuspec", | ||
| 249 | - "lib/net40/FreeSql.dll", | ||
| 250 | - "lib/net40/FreeSql.pdb", | ||
| 251 | - "lib/net40/FreeSql.xml", | ||
| 252 | - "lib/net40/zh-Hans/FreeSql.resources.dll", | ||
| 253 | - "lib/net45/FreeSql.dll", | ||
| 254 | - "lib/net45/FreeSql.pdb", | ||
| 255 | - "lib/net45/FreeSql.xml", | ||
| 256 | - "lib/net45/zh-Hans/FreeSql.resources.dll", | ||
| 257 | - "lib/net451/FreeSql.dll", | ||
| 258 | - "lib/net451/FreeSql.pdb", | ||
| 259 | - "lib/net451/FreeSql.xml", | ||
| 260 | - "lib/net451/zh-Hans/FreeSql.resources.dll", | ||
| 261 | - "lib/netstandard2.0/FreeSql.dll", | ||
| 262 | - "lib/netstandard2.0/FreeSql.pdb", | ||
| 263 | - "lib/netstandard2.0/FreeSql.xml", | ||
| 264 | - "lib/netstandard2.0/zh-Hans/FreeSql.resources.dll", | ||
| 265 | - "lib/netstandard2.1/FreeSql.dll", | ||
| 266 | - "lib/netstandard2.1/FreeSql.pdb", | ||
| 267 | - "lib/netstandard2.1/FreeSql.xml", | ||
| 268 | - "lib/netstandard2.1/zh-Hans/FreeSql.resources.dll", | ||
| 269 | - "logo.png", | ||
| 270 | - "readme.md" | ||
| 271 | - ] | ||
| 272 | - }, | ||
| 273 | - "FreeSql.DbContext/3.2.821": { | ||
| 274 | - "sha512": "wQWjKj7/2Iwzp5WxOE5WV/HmoVmj6fKPYGBxKB7JWxF7HudmXjeZS1Hll2ovQksqF/YujYf7SxGbDv5mU9qSGA==", | ||
| 275 | - "type": "package", | ||
| 276 | - "path": "freesql.dbcontext/3.2.821", | ||
| 277 | - "files": [ | ||
| 278 | - ".nupkg.metadata", | ||
| 279 | - ".signature.p7s", | ||
| 280 | - "freesql.dbcontext.3.2.821.nupkg.sha512", | ||
| 281 | - "freesql.dbcontext.nuspec", | ||
| 282 | - "lib/net40/FreeSql.DbContext.dll", | ||
| 283 | - "lib/net40/FreeSql.DbContext.pdb", | ||
| 284 | - "lib/net40/FreeSql.DbContext.xml", | ||
| 285 | - "lib/net40/zh-Hans/FreeSql.DbContext.resources.dll", | ||
| 286 | - "lib/net45/FreeSql.DbContext.dll", | ||
| 287 | - "lib/net45/FreeSql.DbContext.pdb", | ||
| 288 | - "lib/net45/FreeSql.DbContext.xml", | ||
| 289 | - "lib/net45/zh-Hans/FreeSql.DbContext.resources.dll", | ||
| 290 | - "lib/net5.0/FreeSql.DbContext.dll", | ||
| 291 | - "lib/net5.0/FreeSql.DbContext.pdb", | ||
| 292 | - "lib/net5.0/FreeSql.DbContext.xml", | ||
| 293 | - "lib/net5.0/zh-Hans/FreeSql.DbContext.resources.dll", | ||
| 294 | - "lib/net6.0/FreeSql.DbContext.dll", | ||
| 295 | - "lib/net6.0/FreeSql.DbContext.pdb", | ||
| 296 | - "lib/net6.0/FreeSql.DbContext.xml", | ||
| 297 | - "lib/net6.0/zh-Hans/FreeSql.DbContext.resources.dll", | ||
| 298 | - "lib/net7.0/FreeSql.DbContext.dll", | ||
| 299 | - "lib/net7.0/FreeSql.DbContext.pdb", | ||
| 300 | - "lib/net7.0/FreeSql.DbContext.xml", | ||
| 301 | - "lib/net7.0/zh-Hans/FreeSql.DbContext.resources.dll", | ||
| 302 | - "lib/net8.0/FreeSql.DbContext.dll", | ||
| 303 | - "lib/net8.0/FreeSql.DbContext.pdb", | ||
| 304 | - "lib/net8.0/FreeSql.DbContext.xml", | ||
| 305 | - "lib/net8.0/zh-Hans/FreeSql.DbContext.resources.dll", | ||
| 306 | - "lib/netcoreapp3.1/FreeSql.DbContext.dll", | ||
| 307 | - "lib/netcoreapp3.1/FreeSql.DbContext.pdb", | ||
| 308 | - "lib/netcoreapp3.1/FreeSql.DbContext.xml", | ||
| 309 | - "lib/netcoreapp3.1/zh-Hans/FreeSql.DbContext.resources.dll", | ||
| 310 | - "lib/netstandard2.0/FreeSql.DbContext.dll", | ||
| 311 | - "lib/netstandard2.0/FreeSql.DbContext.pdb", | ||
| 312 | - "lib/netstandard2.0/FreeSql.DbContext.xml", | ||
| 313 | - "lib/netstandard2.0/zh-Hans/FreeSql.DbContext.resources.dll", | ||
| 314 | - "lib/netstandard2.1/FreeSql.DbContext.dll", | ||
| 315 | - "lib/netstandard2.1/FreeSql.DbContext.pdb", | ||
| 316 | - "lib/netstandard2.1/FreeSql.DbContext.xml", | ||
| 317 | - "lib/netstandard2.1/zh-Hans/FreeSql.DbContext.resources.dll", | ||
| 318 | - "logo.png", | ||
| 319 | - "readme.md" | ||
| 320 | - ] | ||
| 321 | - }, | ||
| 322 | - "FreeSql.Provider.Sqlite/3.2.821": { | ||
| 323 | - "sha512": "vBvvq9mDz488XWYeNQSSt8t3FCKquS4DPab7hu7QVRF0ftXRAc6rRK5axFFJZjc5ABU7aIKtu1UiKQky8z/VnA==", | ||
| 324 | - "type": "package", | ||
| 325 | - "path": "freesql.provider.sqlite/3.2.821", | ||
| 326 | - "files": [ | ||
| 327 | - ".nupkg.metadata", | ||
| 328 | - ".signature.p7s", | ||
| 329 | - "freesql.provider.sqlite.3.2.821.nupkg.sha512", | ||
| 330 | - "freesql.provider.sqlite.nuspec", | ||
| 331 | - "lib/net40/FreeSql.Provider.Sqlite.dll", | ||
| 332 | - "lib/net40/FreeSql.Provider.Sqlite.pdb", | ||
| 333 | - "lib/net45/FreeSql.Provider.Sqlite.dll", | ||
| 334 | - "lib/net45/FreeSql.Provider.Sqlite.pdb", | ||
| 335 | - "lib/netstandard2.0/FreeSql.Provider.Sqlite.dll", | ||
| 336 | - "lib/netstandard2.0/FreeSql.Provider.Sqlite.pdb", | ||
| 337 | - "logo.png", | ||
| 338 | - "readme.md" | ||
| 339 | - ] | ||
| 340 | - }, | ||
| 341 | - "FreeSql.Repository/3.2.821": { | ||
| 342 | - "sha512": "cE/VG103FYXn2m63Xp7heYptPazNN+z+dUm9jZe2vNwV8LUCU3PbY04MD+liyQBCZ5WGCK70Pe4GXGfQzvRMLw==", | ||
| 343 | - "type": "package", | ||
| 344 | - "path": "freesql.repository/3.2.821", | ||
| 345 | - "files": [ | ||
| 346 | - ".nupkg.metadata", | ||
| 347 | - ".signature.p7s", | ||
| 348 | - "freesql.repository.3.2.821.nupkg.sha512", | ||
| 349 | - "freesql.repository.nuspec", | ||
| 350 | - "lib/net40/FreeSql.Repository.dll", | ||
| 351 | - "lib/net40/FreeSql.Repository.pdb", | ||
| 352 | - "lib/net45/FreeSql.Repository.dll", | ||
| 353 | - "lib/net45/FreeSql.Repository.pdb", | ||
| 354 | - "lib/net5.0/FreeSql.Repository.dll", | ||
| 355 | - "lib/net5.0/FreeSql.Repository.pdb", | ||
| 356 | - "lib/net6.0/FreeSql.Repository.dll", | ||
| 357 | - "lib/net6.0/FreeSql.Repository.pdb", | ||
| 358 | - "lib/net7.0/FreeSql.Repository.dll", | ||
| 359 | - "lib/net7.0/FreeSql.Repository.pdb", | ||
| 360 | - "lib/net8.0/FreeSql.Repository.dll", | ||
| 361 | - "lib/net8.0/FreeSql.Repository.pdb", | ||
| 362 | - "lib/netcoreapp3.1/FreeSql.Repository.dll", | ||
| 363 | - "lib/netcoreapp3.1/FreeSql.Repository.pdb", | ||
| 364 | - "lib/netstandard2.0/FreeSql.Repository.dll", | ||
| 365 | - "lib/netstandard2.0/FreeSql.Repository.pdb", | ||
| 366 | - "lib/netstandard2.1/FreeSql.Repository.dll", | ||
| 367 | - "lib/netstandard2.1/FreeSql.Repository.pdb", | ||
| 368 | - "logo.png", | ||
| 369 | - "readme.md" | ||
| 370 | - ] | ||
| 371 | - }, | ||
| 372 | - "Microsoft.Extensions.ApiDescription.Server/6.0.5": { | ||
| 373 | - "sha512": "Ckb5EDBUNJdFWyajfXzUIMRkhf52fHZOQuuZg/oiu8y7zDCVwD0iHhew6MnThjHmevanpxL3f5ci2TtHQEN6bw==", | ||
| 374 | - "type": "package", | ||
| 375 | - "path": "microsoft.extensions.apidescription.server/6.0.5", | ||
| 376 | - "hasTools": true, | ||
| 377 | - "files": [ | ||
| 378 | - ".nupkg.metadata", | ||
| 379 | - ".signature.p7s", | ||
| 380 | - "Icon.png", | ||
| 381 | - "build/Microsoft.Extensions.ApiDescription.Server.props", | ||
| 382 | - "build/Microsoft.Extensions.ApiDescription.Server.targets", | ||
| 383 | - "buildMultiTargeting/Microsoft.Extensions.ApiDescription.Server.props", | ||
| 384 | - "buildMultiTargeting/Microsoft.Extensions.ApiDescription.Server.targets", | ||
| 385 | - "microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512", | ||
| 386 | - "microsoft.extensions.apidescription.server.nuspec", | ||
| 387 | - "tools/Newtonsoft.Json.dll", | ||
| 388 | - "tools/dotnet-getdocument.deps.json", | ||
| 389 | - "tools/dotnet-getdocument.dll", | ||
| 390 | - "tools/dotnet-getdocument.runtimeconfig.json", | ||
| 391 | - "tools/net461-x86/GetDocument.Insider.exe", | ||
| 392 | - "tools/net461-x86/GetDocument.Insider.exe.config", | ||
| 393 | - "tools/net461-x86/Microsoft.Win32.Primitives.dll", | ||
| 394 | - "tools/net461-x86/System.AppContext.dll", | ||
| 395 | - "tools/net461-x86/System.Buffers.dll", | ||
| 396 | - "tools/net461-x86/System.Collections.Concurrent.dll", | ||
| 397 | - "tools/net461-x86/System.Collections.NonGeneric.dll", | ||
| 398 | - "tools/net461-x86/System.Collections.Specialized.dll", | ||
| 399 | - "tools/net461-x86/System.Collections.dll", | ||
| 400 | - "tools/net461-x86/System.ComponentModel.EventBasedAsync.dll", | ||
| 401 | - "tools/net461-x86/System.ComponentModel.Primitives.dll", | ||
| 402 | - "tools/net461-x86/System.ComponentModel.TypeConverter.dll", | ||
| 403 | - "tools/net461-x86/System.ComponentModel.dll", | ||
| 404 | - "tools/net461-x86/System.Console.dll", | ||
| 405 | - "tools/net461-x86/System.Data.Common.dll", | ||
| 406 | - "tools/net461-x86/System.Diagnostics.Contracts.dll", | ||
| 407 | - "tools/net461-x86/System.Diagnostics.Debug.dll", | ||
| 408 | - "tools/net461-x86/System.Diagnostics.DiagnosticSource.dll", | ||
| 409 | - "tools/net461-x86/System.Diagnostics.FileVersionInfo.dll", | ||
| 410 | - "tools/net461-x86/System.Diagnostics.Process.dll", | ||
| 411 | - "tools/net461-x86/System.Diagnostics.StackTrace.dll", | ||
| 412 | - "tools/net461-x86/System.Diagnostics.TextWriterTraceListener.dll", | ||
| 413 | - "tools/net461-x86/System.Diagnostics.Tools.dll", | ||
| 414 | - "tools/net461-x86/System.Diagnostics.TraceSource.dll", | ||
| 415 | - "tools/net461-x86/System.Diagnostics.Tracing.dll", | ||
| 416 | - "tools/net461-x86/System.Drawing.Primitives.dll", | ||
| 417 | - "tools/net461-x86/System.Dynamic.Runtime.dll", | ||
| 418 | - "tools/net461-x86/System.Globalization.Calendars.dll", | ||
| 419 | - "tools/net461-x86/System.Globalization.Extensions.dll", | ||
| 420 | - "tools/net461-x86/System.Globalization.dll", | ||
| 421 | - "tools/net461-x86/System.IO.Compression.ZipFile.dll", | ||
| 422 | - "tools/net461-x86/System.IO.Compression.dll", | ||
| 423 | - "tools/net461-x86/System.IO.FileSystem.DriveInfo.dll", | ||
| 424 | - "tools/net461-x86/System.IO.FileSystem.Primitives.dll", | ||
| 425 | - "tools/net461-x86/System.IO.FileSystem.Watcher.dll", | ||
| 426 | - "tools/net461-x86/System.IO.FileSystem.dll", | ||
| 427 | - "tools/net461-x86/System.IO.IsolatedStorage.dll", | ||
| 428 | - "tools/net461-x86/System.IO.MemoryMappedFiles.dll", | ||
| 429 | - "tools/net461-x86/System.IO.Pipes.dll", | ||
| 430 | - "tools/net461-x86/System.IO.UnmanagedMemoryStream.dll", | ||
| 431 | - "tools/net461-x86/System.IO.dll", | ||
| 432 | - "tools/net461-x86/System.Linq.Expressions.dll", | ||
| 433 | - "tools/net461-x86/System.Linq.Parallel.dll", | ||
| 434 | - "tools/net461-x86/System.Linq.Queryable.dll", | ||
| 435 | - "tools/net461-x86/System.Linq.dll", | ||
| 436 | - "tools/net461-x86/System.Memory.dll", | ||
| 437 | - "tools/net461-x86/System.Net.Http.dll", | ||
| 438 | - "tools/net461-x86/System.Net.NameResolution.dll", | ||
| 439 | - "tools/net461-x86/System.Net.NetworkInformation.dll", | ||
| 440 | - "tools/net461-x86/System.Net.Ping.dll", | ||
| 441 | - "tools/net461-x86/System.Net.Primitives.dll", | ||
| 442 | - "tools/net461-x86/System.Net.Requests.dll", | ||
| 443 | - "tools/net461-x86/System.Net.Security.dll", | ||
| 444 | - "tools/net461-x86/System.Net.Sockets.dll", | ||
| 445 | - "tools/net461-x86/System.Net.WebHeaderCollection.dll", | ||
| 446 | - "tools/net461-x86/System.Net.WebSockets.Client.dll", | ||
| 447 | - "tools/net461-x86/System.Net.WebSockets.dll", | ||
| 448 | - "tools/net461-x86/System.Numerics.Vectors.dll", | ||
| 449 | - "tools/net461-x86/System.ObjectModel.dll", | ||
| 450 | - "tools/net461-x86/System.Reflection.Extensions.dll", | ||
| 451 | - "tools/net461-x86/System.Reflection.Primitives.dll", | ||
| 452 | - "tools/net461-x86/System.Reflection.dll", | ||
| 453 | - "tools/net461-x86/System.Resources.Reader.dll", | ||
| 454 | - "tools/net461-x86/System.Resources.ResourceManager.dll", | ||
| 455 | - "tools/net461-x86/System.Resources.Writer.dll", | ||
| 456 | - "tools/net461-x86/System.Runtime.CompilerServices.Unsafe.dll", | ||
| 457 | - "tools/net461-x86/System.Runtime.CompilerServices.VisualC.dll", | ||
| 458 | - "tools/net461-x86/System.Runtime.Extensions.dll", | ||
| 459 | - "tools/net461-x86/System.Runtime.Handles.dll", | ||
| 460 | - "tools/net461-x86/System.Runtime.InteropServices.RuntimeInformation.dll", | ||
| 461 | - "tools/net461-x86/System.Runtime.InteropServices.dll", | ||
| 462 | - "tools/net461-x86/System.Runtime.Numerics.dll", | ||
| 463 | - "tools/net461-x86/System.Runtime.Serialization.Formatters.dll", | ||
| 464 | - "tools/net461-x86/System.Runtime.Serialization.Json.dll", | ||
| 465 | - "tools/net461-x86/System.Runtime.Serialization.Primitives.dll", | ||
| 466 | - "tools/net461-x86/System.Runtime.Serialization.Xml.dll", | ||
| 467 | - "tools/net461-x86/System.Runtime.dll", | ||
| 468 | - "tools/net461-x86/System.Security.Claims.dll", | ||
| 469 | - "tools/net461-x86/System.Security.Cryptography.Algorithms.dll", | ||
| 470 | - "tools/net461-x86/System.Security.Cryptography.Csp.dll", | ||
| 471 | - "tools/net461-x86/System.Security.Cryptography.Encoding.dll", | ||
| 472 | - "tools/net461-x86/System.Security.Cryptography.Primitives.dll", | ||
| 473 | - "tools/net461-x86/System.Security.Cryptography.X509Certificates.dll", | ||
| 474 | - "tools/net461-x86/System.Security.Principal.dll", | ||
| 475 | - "tools/net461-x86/System.Security.SecureString.dll", | ||
| 476 | - "tools/net461-x86/System.Text.Encoding.Extensions.dll", | ||
| 477 | - "tools/net461-x86/System.Text.Encoding.dll", | ||
| 478 | - "tools/net461-x86/System.Text.RegularExpressions.dll", | ||
| 479 | - "tools/net461-x86/System.Threading.Overlapped.dll", | ||
| 480 | - "tools/net461-x86/System.Threading.Tasks.Parallel.dll", | ||
| 481 | - "tools/net461-x86/System.Threading.Tasks.dll", | ||
| 482 | - "tools/net461-x86/System.Threading.Thread.dll", | ||
| 483 | - "tools/net461-x86/System.Threading.ThreadPool.dll", | ||
| 484 | - "tools/net461-x86/System.Threading.Timer.dll", | ||
| 485 | - "tools/net461-x86/System.Threading.dll", | ||
| 486 | - "tools/net461-x86/System.ValueTuple.dll", | ||
| 487 | - "tools/net461-x86/System.Xml.ReaderWriter.dll", | ||
| 488 | - "tools/net461-x86/System.Xml.XDocument.dll", | ||
| 489 | - "tools/net461-x86/System.Xml.XPath.XDocument.dll", | ||
| 490 | - "tools/net461-x86/System.Xml.XPath.dll", | ||
| 491 | - "tools/net461-x86/System.Xml.XmlDocument.dll", | ||
| 492 | - "tools/net461-x86/System.Xml.XmlSerializer.dll", | ||
| 493 | - "tools/net461-x86/netstandard.dll", | ||
| 494 | - "tools/net461/GetDocument.Insider.exe", | ||
| 495 | - "tools/net461/GetDocument.Insider.exe.config", | ||
| 496 | - "tools/net461/Microsoft.Win32.Primitives.dll", | ||
| 497 | - "tools/net461/System.AppContext.dll", | ||
| 498 | - "tools/net461/System.Buffers.dll", | ||
| 499 | - "tools/net461/System.Collections.Concurrent.dll", | ||
| 500 | - "tools/net461/System.Collections.NonGeneric.dll", | ||
| 501 | - "tools/net461/System.Collections.Specialized.dll", | ||
| 502 | - "tools/net461/System.Collections.dll", | ||
| 503 | - "tools/net461/System.ComponentModel.EventBasedAsync.dll", | ||
| 504 | - "tools/net461/System.ComponentModel.Primitives.dll", | ||
| 505 | - "tools/net461/System.ComponentModel.TypeConverter.dll", | ||
| 506 | - "tools/net461/System.ComponentModel.dll", | ||
| 507 | - "tools/net461/System.Console.dll", | ||
| 508 | - "tools/net461/System.Data.Common.dll", | ||
| 509 | - "tools/net461/System.Diagnostics.Contracts.dll", | ||
| 510 | - "tools/net461/System.Diagnostics.Debug.dll", | ||
| 511 | - "tools/net461/System.Diagnostics.DiagnosticSource.dll", | ||
| 512 | - "tools/net461/System.Diagnostics.FileVersionInfo.dll", | ||
| 513 | - "tools/net461/System.Diagnostics.Process.dll", | ||
| 514 | - "tools/net461/System.Diagnostics.StackTrace.dll", | ||
| 515 | - "tools/net461/System.Diagnostics.TextWriterTraceListener.dll", | ||
| 516 | - "tools/net461/System.Diagnostics.Tools.dll", | ||
| 517 | - "tools/net461/System.Diagnostics.TraceSource.dll", | ||
| 518 | - "tools/net461/System.Diagnostics.Tracing.dll", | ||
| 519 | - "tools/net461/System.Drawing.Primitives.dll", | ||
| 520 | - "tools/net461/System.Dynamic.Runtime.dll", | ||
| 521 | - "tools/net461/System.Globalization.Calendars.dll", | ||
| 522 | - "tools/net461/System.Globalization.Extensions.dll", | ||
| 523 | - "tools/net461/System.Globalization.dll", | ||
| 524 | - "tools/net461/System.IO.Compression.ZipFile.dll", | ||
| 525 | - "tools/net461/System.IO.Compression.dll", | ||
| 526 | - "tools/net461/System.IO.FileSystem.DriveInfo.dll", | ||
| 527 | - "tools/net461/System.IO.FileSystem.Primitives.dll", | ||
| 528 | - "tools/net461/System.IO.FileSystem.Watcher.dll", | ||
| 529 | - "tools/net461/System.IO.FileSystem.dll", | ||
| 530 | - "tools/net461/System.IO.IsolatedStorage.dll", | ||
| 531 | - "tools/net461/System.IO.MemoryMappedFiles.dll", | ||
| 532 | - "tools/net461/System.IO.Pipes.dll", | ||
| 533 | - "tools/net461/System.IO.UnmanagedMemoryStream.dll", | ||
| 534 | - "tools/net461/System.IO.dll", | ||
| 535 | - "tools/net461/System.Linq.Expressions.dll", | ||
| 536 | - "tools/net461/System.Linq.Parallel.dll", | ||
| 537 | - "tools/net461/System.Linq.Queryable.dll", | ||
| 538 | - "tools/net461/System.Linq.dll", | ||
| 539 | - "tools/net461/System.Memory.dll", | ||
| 540 | - "tools/net461/System.Net.Http.dll", | ||
| 541 | - "tools/net461/System.Net.NameResolution.dll", | ||
| 542 | - "tools/net461/System.Net.NetworkInformation.dll", | ||
| 543 | - "tools/net461/System.Net.Ping.dll", | ||
| 544 | - "tools/net461/System.Net.Primitives.dll", | ||
| 545 | - "tools/net461/System.Net.Requests.dll", | ||
| 546 | - "tools/net461/System.Net.Security.dll", | ||
| 547 | - "tools/net461/System.Net.Sockets.dll", | ||
| 548 | - "tools/net461/System.Net.WebHeaderCollection.dll", | ||
| 549 | - "tools/net461/System.Net.WebSockets.Client.dll", | ||
| 550 | - "tools/net461/System.Net.WebSockets.dll", | ||
| 551 | - "tools/net461/System.Numerics.Vectors.dll", | ||
| 552 | - "tools/net461/System.ObjectModel.dll", | ||
| 553 | - "tools/net461/System.Reflection.Extensions.dll", | ||
| 554 | - "tools/net461/System.Reflection.Primitives.dll", | ||
| 555 | - "tools/net461/System.Reflection.dll", | ||
| 556 | - "tools/net461/System.Resources.Reader.dll", | ||
| 557 | - "tools/net461/System.Resources.ResourceManager.dll", | ||
| 558 | - "tools/net461/System.Resources.Writer.dll", | ||
| 559 | - "tools/net461/System.Runtime.CompilerServices.Unsafe.dll", | ||
| 560 | - "tools/net461/System.Runtime.CompilerServices.VisualC.dll", | ||
| 561 | - "tools/net461/System.Runtime.Extensions.dll", | ||
| 562 | - "tools/net461/System.Runtime.Handles.dll", | ||
| 563 | - "tools/net461/System.Runtime.InteropServices.RuntimeInformation.dll", | ||
| 564 | - "tools/net461/System.Runtime.InteropServices.dll", | ||
| 565 | - "tools/net461/System.Runtime.Numerics.dll", | ||
| 566 | - "tools/net461/System.Runtime.Serialization.Formatters.dll", | ||
| 567 | - "tools/net461/System.Runtime.Serialization.Json.dll", | ||
| 568 | - "tools/net461/System.Runtime.Serialization.Primitives.dll", | ||
| 569 | - "tools/net461/System.Runtime.Serialization.Xml.dll", | ||
| 570 | - "tools/net461/System.Runtime.dll", | ||
| 571 | - "tools/net461/System.Security.Claims.dll", | ||
| 572 | - "tools/net461/System.Security.Cryptography.Algorithms.dll", | ||
| 573 | - "tools/net461/System.Security.Cryptography.Csp.dll", | ||
| 574 | - "tools/net461/System.Security.Cryptography.Encoding.dll", | ||
| 575 | - "tools/net461/System.Security.Cryptography.Primitives.dll", | ||
| 576 | - "tools/net461/System.Security.Cryptography.X509Certificates.dll", | ||
| 577 | - "tools/net461/System.Security.Principal.dll", | ||
| 578 | - "tools/net461/System.Security.SecureString.dll", | ||
| 579 | - "tools/net461/System.Text.Encoding.Extensions.dll", | ||
| 580 | - "tools/net461/System.Text.Encoding.dll", | ||
| 581 | - "tools/net461/System.Text.RegularExpressions.dll", | ||
| 582 | - "tools/net461/System.Threading.Overlapped.dll", | ||
| 583 | - "tools/net461/System.Threading.Tasks.Parallel.dll", | ||
| 584 | - "tools/net461/System.Threading.Tasks.dll", | ||
| 585 | - "tools/net461/System.Threading.Thread.dll", | ||
| 586 | - "tools/net461/System.Threading.ThreadPool.dll", | ||
| 587 | - "tools/net461/System.Threading.Timer.dll", | ||
| 588 | - "tools/net461/System.Threading.dll", | ||
| 589 | - "tools/net461/System.ValueTuple.dll", | ||
| 590 | - "tools/net461/System.Xml.ReaderWriter.dll", | ||
| 591 | - "tools/net461/System.Xml.XDocument.dll", | ||
| 592 | - "tools/net461/System.Xml.XPath.XDocument.dll", | ||
| 593 | - "tools/net461/System.Xml.XPath.dll", | ||
| 594 | - "tools/net461/System.Xml.XmlDocument.dll", | ||
| 595 | - "tools/net461/System.Xml.XmlSerializer.dll", | ||
| 596 | - "tools/net461/netstandard.dll", | ||
| 597 | - "tools/netcoreapp2.1/GetDocument.Insider.deps.json", | ||
| 598 | - "tools/netcoreapp2.1/GetDocument.Insider.dll", | ||
| 599 | - "tools/netcoreapp2.1/GetDocument.Insider.runtimeconfig.json", | ||
| 600 | - "tools/netcoreapp2.1/System.Diagnostics.DiagnosticSource.dll" | ||
| 601 | - ] | ||
| 602 | - }, | ||
| 603 | - "Microsoft.Extensions.DependencyInjection/8.0.0": { | ||
| 604 | - "sha512": "V8S3bsm50ig6JSyrbcJJ8bW2b9QLGouz+G1miK3UTaOWmMtFwNNNzUf4AleyDWUmTrWMLNnFSLEQtxmxgNQnNQ==", | ||
| 605 | - "type": "package", | ||
| 606 | - "path": "microsoft.extensions.dependencyinjection/8.0.0", | ||
| 607 | - "files": [ | ||
| 608 | - ".nupkg.metadata", | ||
| 609 | - ".signature.p7s", | ||
| 610 | - "Icon.png", | ||
| 611 | - "LICENSE.TXT", | ||
| 612 | - "PACKAGE.md", | ||
| 613 | - "THIRD-PARTY-NOTICES.TXT", | ||
| 614 | - "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.targets", | ||
| 615 | - "buildTransitive/net462/_._", | ||
| 616 | - "buildTransitive/net6.0/_._", | ||
| 617 | - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.targets", | ||
| 618 | - "lib/net462/Microsoft.Extensions.DependencyInjection.dll", | ||
| 619 | - "lib/net462/Microsoft.Extensions.DependencyInjection.xml", | ||
| 620 | - "lib/net6.0/Microsoft.Extensions.DependencyInjection.dll", | ||
| 621 | - "lib/net6.0/Microsoft.Extensions.DependencyInjection.xml", | ||
| 622 | - "lib/net7.0/Microsoft.Extensions.DependencyInjection.dll", | ||
| 623 | - "lib/net7.0/Microsoft.Extensions.DependencyInjection.xml", | ||
| 624 | - "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll", | ||
| 625 | - "lib/net8.0/Microsoft.Extensions.DependencyInjection.xml", | ||
| 626 | - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll", | ||
| 627 | - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.xml", | ||
| 628 | - "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.dll", | ||
| 629 | - "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.xml", | ||
| 630 | - "microsoft.extensions.dependencyinjection.8.0.0.nupkg.sha512", | ||
| 631 | - "microsoft.extensions.dependencyinjection.nuspec", | ||
| 632 | - "useSharedDesignerContext.txt" | ||
| 633 | - ] | ||
| 634 | - }, | ||
| 635 | - "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.0": { | ||
| 636 | - "sha512": "cjWrLkJXK0rs4zofsK4bSdg+jhDLTaxrkXu4gS6Y7MAlCvRyNNgwY/lJi5RDlQOnSZweHqoyvgvbdvQsRIW+hg==", | ||
| 637 | - "type": "package", | ||
| 638 | - "path": "microsoft.extensions.dependencyinjection.abstractions/8.0.0", | ||
| 639 | - "files": [ | ||
| 640 | - ".nupkg.metadata", | ||
| 641 | - ".signature.p7s", | ||
| 642 | - "Icon.png", | ||
| 643 | - "LICENSE.TXT", | ||
| 644 | - "PACKAGE.md", | ||
| 645 | - "THIRD-PARTY-NOTICES.TXT", | ||
| 646 | - "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.Abstractions.targets", | ||
| 647 | - "buildTransitive/net462/_._", | ||
| 648 | - "buildTransitive/net6.0/_._", | ||
| 649 | - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.Abstractions.targets", | ||
| 650 | - "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.dll", | ||
| 651 | - "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.xml", | ||
| 652 | - "lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", | ||
| 653 | - "lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", | ||
| 654 | - "lib/net7.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", | ||
| 655 | - "lib/net7.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", | ||
| 656 | - "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", | ||
| 657 | - "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", | ||
| 658 | - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", | ||
| 659 | - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", | ||
| 660 | - "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.dll", | ||
| 661 | - "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.xml", | ||
| 662 | - "microsoft.extensions.dependencyinjection.abstractions.8.0.0.nupkg.sha512", | ||
| 663 | - "microsoft.extensions.dependencyinjection.abstractions.nuspec", | ||
| 664 | - "useSharedDesignerContext.txt" | ||
| 665 | - ] | ||
| 666 | - }, | ||
| 667 | - "Microsoft.OpenApi/1.2.3": { | ||
| 668 | - "sha512": "Nug3rO+7Kl5/SBAadzSMAVgqDlfGjJZ0GenQrLywJ84XGKO0uRqkunz5Wyl0SDwcR71bAATXvSdbdzPrYRYKGw==", | ||
| 669 | - "type": "package", | ||
| 670 | - "path": "microsoft.openapi/1.2.3", | ||
| 671 | - "files": [ | ||
| 672 | - ".nupkg.metadata", | ||
| 673 | - ".signature.p7s", | ||
| 674 | - "lib/net46/Microsoft.OpenApi.dll", | ||
| 675 | - "lib/net46/Microsoft.OpenApi.pdb", | ||
| 676 | - "lib/net46/Microsoft.OpenApi.xml", | ||
| 677 | - "lib/netstandard2.0/Microsoft.OpenApi.dll", | ||
| 678 | - "lib/netstandard2.0/Microsoft.OpenApi.pdb", | ||
| 679 | - "lib/netstandard2.0/Microsoft.OpenApi.xml", | ||
| 680 | - "microsoft.openapi.1.2.3.nupkg.sha512", | ||
| 681 | - "microsoft.openapi.nuspec" | ||
| 682 | - ] | ||
| 683 | - }, | ||
| 684 | - "Stub.System.Data.SQLite.Core.NetStandard/1.0.115.5": { | ||
| 685 | - "sha512": "WfrqQg6WL+r4H1sVKTenNj6ERLXUukUxqcjH1rqPqXadeIWccTVpydESieD7cZ/NWQVSKLYIHuoBX5du+BFhIQ==", | ||
| 686 | - "type": "package", | ||
| 687 | - "path": "stub.system.data.sqlite.core.netstandard/1.0.115.5", | ||
| 688 | - "files": [ | ||
| 689 | - ".nupkg.metadata", | ||
| 690 | - ".signature.p7s", | ||
| 691 | - "lib/netstandard2.0/System.Data.SQLite.dll", | ||
| 692 | - "lib/netstandard2.0/System.Data.SQLite.dll.altconfig", | ||
| 693 | - "lib/netstandard2.0/System.Data.SQLite.xml", | ||
| 694 | - "lib/netstandard2.1/System.Data.SQLite.dll", | ||
| 695 | - "lib/netstandard2.1/System.Data.SQLite.dll.altconfig", | ||
| 696 | - "lib/netstandard2.1/System.Data.SQLite.xml", | ||
| 697 | - "runtimes/linux-x64/native/SQLite.Interop.dll", | ||
| 698 | - "runtimes/osx-x64/native/SQLite.Interop.dll", | ||
| 699 | - "runtimes/win-x64/native/SQLite.Interop.dll", | ||
| 700 | - "runtimes/win-x86/native/SQLite.Interop.dll", | ||
| 701 | - "stub.system.data.sqlite.core.netstandard.1.0.115.5.nupkg.sha512", | ||
| 702 | - "stub.system.data.sqlite.core.netstandard.nuspec" | ||
| 703 | - ] | ||
| 704 | - }, | ||
| 705 | - "Swashbuckle.AspNetCore/6.4.0": { | ||
| 706 | - "sha512": "eUBr4TW0up6oKDA5Xwkul289uqSMgY0xGN4pnbOIBqCcN9VKGGaPvHX3vWaG/hvocfGDP+MGzMA0bBBKz2fkmQ==", | ||
| 707 | - "type": "package", | ||
| 708 | - "path": "swashbuckle.aspnetcore/6.4.0", | ||
| 709 | - "files": [ | ||
| 710 | - ".nupkg.metadata", | ||
| 711 | - ".signature.p7s", | ||
| 712 | - "build/Swashbuckle.AspNetCore.props", | ||
| 713 | - "swashbuckle.aspnetcore.6.4.0.nupkg.sha512", | ||
| 714 | - "swashbuckle.aspnetcore.nuspec" | ||
| 715 | - ] | ||
| 716 | - }, | ||
| 717 | - "Swashbuckle.AspNetCore.Swagger/6.4.0": { | ||
| 718 | - "sha512": "nl4SBgGM+cmthUcpwO/w1lUjevdDHAqRvfUoe4Xp/Uvuzt9mzGUwyFCqa3ODBAcZYBiFoKvrYwz0rabslJvSmQ==", | ||
| 719 | - "type": "package", | ||
| 720 | - "path": "swashbuckle.aspnetcore.swagger/6.4.0", | ||
| 721 | - "files": [ | ||
| 722 | - ".nupkg.metadata", | ||
| 723 | - ".signature.p7s", | ||
| 724 | - "lib/net5.0/Swashbuckle.AspNetCore.Swagger.dll", | ||
| 725 | - "lib/net5.0/Swashbuckle.AspNetCore.Swagger.pdb", | ||
| 726 | - "lib/net5.0/Swashbuckle.AspNetCore.Swagger.xml", | ||
| 727 | - "lib/net6.0/Swashbuckle.AspNetCore.Swagger.dll", | ||
| 728 | - "lib/net6.0/Swashbuckle.AspNetCore.Swagger.pdb", | ||
| 729 | - "lib/net6.0/Swashbuckle.AspNetCore.Swagger.xml", | ||
| 730 | - "lib/netcoreapp3.0/Swashbuckle.AspNetCore.Swagger.dll", | ||
| 731 | - "lib/netcoreapp3.0/Swashbuckle.AspNetCore.Swagger.pdb", | ||
| 732 | - "lib/netcoreapp3.0/Swashbuckle.AspNetCore.Swagger.xml", | ||
| 733 | - "lib/netstandard2.0/Swashbuckle.AspNetCore.Swagger.dll", | ||
| 734 | - "lib/netstandard2.0/Swashbuckle.AspNetCore.Swagger.pdb", | ||
| 735 | - "lib/netstandard2.0/Swashbuckle.AspNetCore.Swagger.xml", | ||
| 736 | - "swashbuckle.aspnetcore.swagger.6.4.0.nupkg.sha512", | ||
| 737 | - "swashbuckle.aspnetcore.swagger.nuspec" | ||
| 738 | - ] | ||
| 739 | - }, | ||
| 740 | - "Swashbuckle.AspNetCore.SwaggerGen/6.4.0": { | ||
| 741 | - "sha512": "lXhcUBVqKrPFAQF7e/ZeDfb5PMgE8n5t6L5B6/BQSpiwxgHzmBcx8Msu42zLYFTvR5PIqE9Q9lZvSQAcwCxJjw==", | ||
| 742 | - "type": "package", | ||
| 743 | - "path": "swashbuckle.aspnetcore.swaggergen/6.4.0", | ||
| 744 | - "files": [ | ||
| 745 | - ".nupkg.metadata", | ||
| 746 | - ".signature.p7s", | ||
| 747 | - "lib/net5.0/Swashbuckle.AspNetCore.SwaggerGen.dll", | ||
| 748 | - "lib/net5.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", | ||
| 749 | - "lib/net5.0/Swashbuckle.AspNetCore.SwaggerGen.xml", | ||
| 750 | - "lib/net6.0/Swashbuckle.AspNetCore.SwaggerGen.dll", | ||
| 751 | - "lib/net6.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", | ||
| 752 | - "lib/net6.0/Swashbuckle.AspNetCore.SwaggerGen.xml", | ||
| 753 | - "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerGen.dll", | ||
| 754 | - "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", | ||
| 755 | - "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerGen.xml", | ||
| 756 | - "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerGen.dll", | ||
| 757 | - "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", | ||
| 758 | - "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerGen.xml", | ||
| 759 | - "swashbuckle.aspnetcore.swaggergen.6.4.0.nupkg.sha512", | ||
| 760 | - "swashbuckle.aspnetcore.swaggergen.nuspec" | ||
| 761 | - ] | ||
| 762 | - }, | ||
| 763 | - "Swashbuckle.AspNetCore.SwaggerUI/6.4.0": { | ||
| 764 | - "sha512": "1Hh3atb3pi8c+v7n4/3N80Jj8RvLOXgWxzix6w3OZhB7zBGRwsy7FWr4e3hwgPweSBpwfElqj4V4nkjYabH9nQ==", | ||
| 765 | - "type": "package", | ||
| 766 | - "path": "swashbuckle.aspnetcore.swaggerui/6.4.0", | ||
| 767 | - "files": [ | ||
| 768 | - ".nupkg.metadata", | ||
| 769 | - ".signature.p7s", | ||
| 770 | - "lib/net5.0/Swashbuckle.AspNetCore.SwaggerUI.dll", | ||
| 771 | - "lib/net5.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", | ||
| 772 | - "lib/net5.0/Swashbuckle.AspNetCore.SwaggerUI.xml", | ||
| 773 | - "lib/net6.0/Swashbuckle.AspNetCore.SwaggerUI.dll", | ||
| 774 | - "lib/net6.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", | ||
| 775 | - "lib/net6.0/Swashbuckle.AspNetCore.SwaggerUI.xml", | ||
| 776 | - "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerUI.dll", | ||
| 777 | - "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", | ||
| 778 | - "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerUI.xml", | ||
| 779 | - "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerUI.dll", | ||
| 780 | - "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", | ||
| 781 | - "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerUI.xml", | ||
| 782 | - "swashbuckle.aspnetcore.swaggerui.6.4.0.nupkg.sha512", | ||
| 783 | - "swashbuckle.aspnetcore.swaggerui.nuspec" | ||
| 784 | - ] | ||
| 785 | - }, | ||
| 786 | - "System.Data.SQLite.Core/1.0.115.5": { | ||
| 787 | - "sha512": "vADIqqgpxaC5xR6qOV8/KMZkQeSDCfmmWpVOtQx0oEr3Yjq2XdTxX7+jfE4+oO2xPovAbYiz6Q5cLRbSsDkq6Q==", | ||
| 788 | - "type": "package", | ||
| 789 | - "path": "system.data.sqlite.core/1.0.115.5", | ||
| 790 | - "files": [ | ||
| 791 | - ".nupkg.metadata", | ||
| 792 | - ".signature.p7s", | ||
| 793 | - "system.data.sqlite.core.1.0.115.5.nupkg.sha512", | ||
| 794 | - "system.data.sqlite.core.nuspec" | ||
| 795 | - ] | ||
| 796 | - } | ||
| 797 | - }, | ||
| 798 | - "projectFileDependencyGroups": { | ||
| 799 | - "net8.0": [ | ||
| 800 | - "FreeSql >= 3.2.821", | ||
| 801 | - "FreeSql.Provider.Sqlite >= 3.2.821", | ||
| 802 | - "FreeSql.Repository >= 3.2.821", | ||
| 803 | - "Swashbuckle.AspNetCore >= 6.4.0" | ||
| 804 | - ] | ||
| 805 | - }, | ||
| 806 | - "packageFolders": { | ||
| 807 | - "C:\\Users\\anan\\.nuget\\packages\\": {}, | ||
| 808 | - "C:\\Users\\anan\\AppData\\Roaming\\Godot\\mono\\GodotNuGetFallbackFolder": {}, | ||
| 809 | - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {} | ||
| 810 | - }, | ||
| 811 | - "project": { | ||
| 812 | - "version": "1.0.0", | ||
| 813 | - "restore": { | ||
| 814 | - "projectUniqueName": "E:\\Code\\Blueprint\\Blueprint.Net.Server\\Blueprint.Net.Server.csproj", | ||
| 815 | - "projectName": "Blueprint.Net.Server", | ||
| 816 | - "projectPath": "E:\\Code\\Blueprint\\Blueprint.Net.Server\\Blueprint.Net.Server.csproj", | ||
| 817 | - "packagesPath": "C:\\Users\\anan\\.nuget\\packages\\", | ||
| 818 | - "outputPath": "E:\\Code\\Blueprint\\Blueprint.Net.Server\\obj\\", | ||
| 819 | - "projectStyle": "PackageReference", | ||
| 820 | - "fallbackFolders": [ | ||
| 821 | - "C:\\Users\\anan\\AppData\\Roaming\\Godot\\mono\\GodotNuGetFallbackFolder", | ||
| 822 | - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" | ||
| 823 | - ], | ||
| 824 | - "configFilePaths": [ | ||
| 825 | - "C:\\Users\\anan\\AppData\\Roaming\\NuGet\\NuGet.Config", | ||
| 826 | - "C:\\Users\\anan\\AppData\\Roaming\\NuGet\\config\\Godot.Offline.Config", | ||
| 827 | - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", | ||
| 828 | - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" | ||
| 829 | - ], | ||
| 830 | - "originalTargetFrameworks": [ | ||
| 831 | - "net8.0" | ||
| 832 | - ], | ||
| 833 | - "sources": { | ||
| 834 | - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, | ||
| 835 | - "C:\\Program Files\\dotnet\\library-packs": {}, | ||
| 836 | - "https://api.nuget.org/v3/index.json": {} | ||
| 837 | - }, | ||
| 838 | - "frameworks": { | ||
| 839 | - "net8.0": { | ||
| 840 | - "targetAlias": "net8.0", | ||
| 841 | - "projectReferences": {} | ||
| 842 | - } | ||
| 843 | - }, | ||
| 844 | - "warningProperties": { | ||
| 845 | - "warnAsError": [ | ||
| 846 | - "NU1605" | ||
| 847 | - ] | ||
| 848 | - }, | ||
| 849 | - "restoreAuditProperties": { | ||
| 850 | - "enableAudit": "true", | ||
| 851 | - "auditLevel": "low", | ||
| 852 | - "auditMode": "direct" | ||
| 853 | - } | ||
| 854 | - }, | ||
| 855 | - "frameworks": { | ||
| 856 | - "net8.0": { | ||
| 857 | - "targetAlias": "net8.0", | ||
| 858 | - "dependencies": { | ||
| 859 | - "FreeSql": { | ||
| 860 | - "target": "Package", | ||
| 861 | - "version": "[3.2.821, )" | ||
| 862 | - }, | ||
| 863 | - "FreeSql.Provider.Sqlite": { | ||
| 864 | - "target": "Package", | ||
| 865 | - "version": "[3.2.821, )" | ||
| 866 | - }, | ||
| 867 | - "FreeSql.Repository": { | ||
| 868 | - "target": "Package", | ||
| 869 | - "version": "[3.2.821, )" | ||
| 870 | - }, | ||
| 871 | - "Swashbuckle.AspNetCore": { | ||
| 872 | - "target": "Package", | ||
| 873 | - "version": "[6.4.0, )" | ||
| 874 | - } | ||
| 875 | - }, | ||
| 876 | - "imports": [ | ||
| 877 | - "net461", | ||
| 878 | - "net462", | ||
| 879 | - "net47", | ||
| 880 | - "net471", | ||
| 881 | - "net472", | ||
| 882 | - "net48", | ||
| 883 | - "net481" | ||
| 884 | - ], | ||
| 885 | - "assetTargetFallback": true, | ||
| 886 | - "warn": true, | ||
| 887 | - "frameworkReferences": { | ||
| 888 | - "Microsoft.AspNetCore.App": { | ||
| 889 | - "privateAssets": "none" | ||
| 890 | - }, | ||
| 891 | - "Microsoft.NETCore.App": { | ||
| 892 | - "privateAssets": "all" | ||
| 893 | - } | ||
| 894 | - }, | ||
| 895 | - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.201/PortableRuntimeIdentifierGraph.json" | ||
| 896 | - } | ||
| 897 | - } | ||
| 898 | - } | ||
| 899 | -} | ||
| 900 | \ No newline at end of file | 0 | \ No newline at end of file |
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/obj/project.nuget.cache deleted
100644 → 0
| 1 | -{ | ||
| 2 | - "version": 2, | ||
| 3 | - "dgSpecHash": "DA7OQW1R/bNe9e6/SrjHTvIq5zA0jn0hwqi81cixrmZ4iGKP5aTwTMcL2WpK4pbrz1wFsABnWSUlUdTKp7LCLw==", | ||
| 4 | - "success": true, | ||
| 5 | - "projectFilePath": "E:\\Code\\Blueprint\\Blueprint.Net.Server\\Blueprint.Net.Server.csproj", | ||
| 6 | - "expectedPackageFiles": [ | ||
| 7 | - "C:\\Users\\anan\\.nuget\\packages\\freesql\\3.2.821\\freesql.3.2.821.nupkg.sha512", | ||
| 8 | - "C:\\Users\\anan\\.nuget\\packages\\freesql.dbcontext\\3.2.821\\freesql.dbcontext.3.2.821.nupkg.sha512", | ||
| 9 | - "C:\\Users\\anan\\.nuget\\packages\\freesql.provider.sqlite\\3.2.821\\freesql.provider.sqlite.3.2.821.nupkg.sha512", | ||
| 10 | - "C:\\Users\\anan\\.nuget\\packages\\freesql.repository\\3.2.821\\freesql.repository.3.2.821.nupkg.sha512", | ||
| 11 | - "C:\\Users\\anan\\.nuget\\packages\\microsoft.extensions.apidescription.server\\6.0.5\\microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512", | ||
| 12 | - "C:\\Users\\anan\\.nuget\\packages\\microsoft.extensions.dependencyinjection\\8.0.0\\microsoft.extensions.dependencyinjection.8.0.0.nupkg.sha512", | ||
| 13 | - "C:\\Users\\anan\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\8.0.0\\microsoft.extensions.dependencyinjection.abstractions.8.0.0.nupkg.sha512", | ||
| 14 | - "C:\\Users\\anan\\.nuget\\packages\\microsoft.openapi\\1.2.3\\microsoft.openapi.1.2.3.nupkg.sha512", | ||
| 15 | - "C:\\Users\\anan\\.nuget\\packages\\stub.system.data.sqlite.core.netstandard\\1.0.115.5\\stub.system.data.sqlite.core.netstandard.1.0.115.5.nupkg.sha512", | ||
| 16 | - "C:\\Users\\anan\\.nuget\\packages\\swashbuckle.aspnetcore\\6.4.0\\swashbuckle.aspnetcore.6.4.0.nupkg.sha512", | ||
| 17 | - "C:\\Users\\anan\\.nuget\\packages\\swashbuckle.aspnetcore.swagger\\6.4.0\\swashbuckle.aspnetcore.swagger.6.4.0.nupkg.sha512", | ||
| 18 | - "C:\\Users\\anan\\.nuget\\packages\\swashbuckle.aspnetcore.swaggergen\\6.4.0\\swashbuckle.aspnetcore.swaggergen.6.4.0.nupkg.sha512", | ||
| 19 | - "C:\\Users\\anan\\.nuget\\packages\\swashbuckle.aspnetcore.swaggerui\\6.4.0\\swashbuckle.aspnetcore.swaggerui.6.4.0.nupkg.sha512", | ||
| 20 | - "C:\\Users\\anan\\.nuget\\packages\\system.data.sqlite.core\\1.0.115.5\\system.data.sqlite.core.1.0.115.5.nupkg.sha512" | ||
| 21 | - ], | ||
| 22 | - "logs": [] | ||
| 23 | -} | ||
| 24 | \ No newline at end of file | 0 | \ No newline at end of file |
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/wwwroot/carddesign.html deleted
100644 → 0
| 1 | -<!DOCTYPE html> | ||
| 2 | -<html lang="en"> | ||
| 3 | -<head> | ||
| 4 | - <meta charset="UTF-8"> | ||
| 5 | - <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||
| 6 | - <title>Card Editor</title> | ||
| 7 | - | ||
| 8 | - | ||
| 9 | - | ||
| 10 | - <style> | ||
| 11 | - body { | ||
| 12 | - font-family: Arial, sans-serif; | ||
| 13 | - } | ||
| 14 | - | ||
| 15 | - .container { | ||
| 16 | - max-width: 800px; | ||
| 17 | - margin: auto; | ||
| 18 | - padding: 20px; | ||
| 19 | - } | ||
| 20 | - | ||
| 21 | - .json-output { | ||
| 22 | - background-color: #f4f4f4; | ||
| 23 | - border: 1px solid #ddd; | ||
| 24 | - padding: 10px; | ||
| 25 | - margin-top: 20px; | ||
| 26 | - } | ||
| 27 | - | ||
| 28 | - input, select, button { | ||
| 29 | - padding: 8px; | ||
| 30 | - margin-top: 5px; | ||
| 31 | - width: 100%; | ||
| 32 | - } | ||
| 33 | - | ||
| 34 | - button { | ||
| 35 | - cursor: pointer; | ||
| 36 | - } | ||
| 37 | - | ||
| 38 | - svg { | ||
| 39 | - background-color: #333; | ||
| 40 | - border: 1px solid #ccc; | ||
| 41 | - padding: 30px; | ||
| 42 | - } | ||
| 43 | - </style> | ||
| 44 | -</head> | ||
| 45 | -<body> | ||
| 46 | - <div class="container"> | ||
| 47 | - <h1>Card Editor</h1> | ||
| 48 | - <form id="cardForm"> | ||
| 49 | - <label for="id">Card ID:</label> | ||
| 50 | - <input type="text" id="id" name="id" required> | ||
| 51 | - | ||
| 52 | - <label for="label">Label:</label> | ||
| 53 | - <input type="text" id="label" name="label" required> | ||
| 54 | - | ||
| 55 | - <label for="type">Type:</label> | ||
| 56 | - <input type="text" id="type" name="type" required> | ||
| 57 | - | ||
| 58 | - <label for="titleBarColor">Title Bar Color (comma-separated):</label> | ||
| 59 | - <input type="text" id="titleBarColor" name="titleBarColor" required> | ||
| 60 | - | ||
| 61 | - <h3>Nodes</h3> | ||
| 62 | - <div id="nodesContainer"> | ||
| 63 | - <!-- Node inputs will be added here --> | ||
| 64 | - </div> | ||
| 65 | - <button type="button" onclick="addNode()">Add Node</button> | ||
| 66 | - <button type="submit">Update Card JSON</button> | ||
| 67 | - </form> | ||
| 68 | - | ||
| 69 | - <div class="json-output" id="jsonOutput"></div> | ||
| 70 | - | ||
| 71 | - <!-- SVG container for drawing the card --> | ||
| 72 | - <svg id="svgContainer" width="200" height="300"></svg> | ||
| 73 | - </div> | ||
| 74 | - | ||
| 75 | - <script type="text/javascript"> | ||
| 76 | - var card = { | ||
| 77 | - id: 'card0', | ||
| 78 | - x: 0, | ||
| 79 | - y: 0, | ||
| 80 | - label: 'Start', | ||
| 81 | - type: "start", | ||
| 82 | - nodes: [{ | ||
| 83 | - type: "out", | ||
| 84 | - level: 0, | ||
| 85 | - label: 'call', | ||
| 86 | - enumType: 'call', | ||
| 87 | - color: '#fff', | ||
| 88 | - multiConnected: 1 | ||
| 89 | - }], | ||
| 90 | - titleBarColor: ['#84fab0', '#8fd3f4'] | ||
| 91 | - }; | ||
| 92 | - | ||
| 93 | - function updateForm() { | ||
| 94 | - document.getElementById('id').value = card.id; | ||
| 95 | - document.getElementById('label').value = card.label; | ||
| 96 | - document.getElementById('type').value = card.type; | ||
| 97 | - document.getElementById('titleBarColor').value = card.titleBarColor.join(', '); | ||
| 98 | - | ||
| 99 | - const nodesContainer = document.getElementById('nodesContainer'); | ||
| 100 | - nodesContainer.innerHTML = ''; | ||
| 101 | - card.nodes.forEach((node, index) => { | ||
| 102 | - addNode(node, index); | ||
| 103 | - }); | ||
| 104 | - } | ||
| 105 | - | ||
| 106 | - function addNode(node = {}, index = card.nodes.length) { | ||
| 107 | - const container = document.createElement('div'); | ||
| 108 | - container.innerHTML = ` | ||
| 109 | - <label>Node ${index + 1}</label> | ||
| 110 | - <select name="nodeType-${index}"> | ||
| 111 | - <option value="in" ${node.type === 'in' ? 'selected' : ''}>In</option> | ||
| 112 | - <option value="out" ${node.type === 'out' ? 'selected' : ''}>Out</option> | ||
| 113 | - </select> | ||
| 114 | - <input type="number" placeholder="Level" value="${node.level || 0}" name="nodeLevel-${index}"> | ||
| 115 | - <input type="text" placeholder="Enum Type" value="${node.enumType || ''}" name="nodeEnumType-${index}"> | ||
| 116 | - <input type="text" placeholder="Label" value="${node.label || ''}" name="nodeLabel-${index}"> | ||
| 117 | - <input type="text" placeholder="Color" value="${node.color || ''}" name="nodeColor-${index}"> | ||
| 118 | - <input type="number" placeholder="Multi Connected" value="${node.multiConnected || 0}" name="nodeMultiConnected-${index}"> | ||
| 119 | - <button type="button" onclick="removeNode(${index})">Remove Node</button> | ||
| 120 | - `; | ||
| 121 | - document.getElementById('nodesContainer').appendChild(container); | ||
| 122 | - } | ||
| 123 | - | ||
| 124 | - function removeNode(index) { | ||
| 125 | - card.nodes.splice(index, 1); | ||
| 126 | - updateForm(); // Refresh the form and JSON output | ||
| 127 | - drawCard(); | ||
| 128 | - } | ||
| 129 | - | ||
| 130 | - document.getElementById('cardForm').onsubmit = function (event) { | ||
| 131 | - event.preventDefault(); | ||
| 132 | - card.id = document.getElementById('id').value; | ||
| 133 | - card.label = document.getElementById('label').value; | ||
| 134 | - card.type = document.getElementById('type').value; | ||
| 135 | - card.titleBarColor = document.getElementById('titleBarColor').value.split(',').map(color => color.trim()); | ||
| 136 | - | ||
| 137 | - card.nodes = []; | ||
| 138 | - const nodes = document.querySelectorAll('#nodesContainer > div'); | ||
| 139 | - nodes.forEach((node, index) => { | ||
| 140 | - card.nodes.push({ | ||
| 141 | - type: document.querySelector(`[name="nodeType-${index}"]`).value, | ||
| 142 | - level: parseInt(document.querySelector(`[name="nodeLevel-${index}"]`).value), | ||
| 143 | - enumType: document.querySelector(`[name="nodeEnumType-${index}"]`).value, | ||
| 144 | - label: document.querySelector(`[name="nodeLabel-${index}"]`).value, | ||
| 145 | - color: document.querySelector(`[name="nodeColor-${index}"]`).value, | ||
| 146 | - multiConnected: parseInt(document.querySelector(`[name="nodeMultiConnected-${index}"]`).value) | ||
| 147 | - }); | ||
| 148 | - }); | ||
| 149 | - | ||
| 150 | - updateJSONOutput(); | ||
| 151 | - drawCard(); | ||
| 152 | - }; | ||
| 153 | - | ||
| 154 | - function updateJSONOutput() { | ||
| 155 | - document.getElementById('jsonOutput').textContent = JSON.stringify(card, null, 2); | ||
| 156 | - } | ||
| 157 | - | ||
| 158 | - function drawCard() { | ||
| 159 | - const cardsContainer = document.getElementById('svgContainer'); | ||
| 160 | - cardsContainer.innerHTML = ''; // 清除现有的卡片 | ||
| 161 | - | ||
| 162 | - //创建标题栏渐变色 | ||
| 163 | - const defs = document.createElementNS('http://www.w3.org/2000/svg', 'defs'); | ||
| 164 | - const linearGradient = document.createElementNS('http://www.w3.org/2000/svg', 'linearGradient'); | ||
| 165 | - linearGradient.setAttribute('id', `titleGradient-${card.id}`); | ||
| 166 | - linearGradient.setAttribute('x1', '0%'); // 渐变起点的x坐标 | ||
| 167 | - linearGradient.setAttribute('y1', '100%'); // 渐变起点的y坐标 | ||
| 168 | - linearGradient.setAttribute('x2', '100%'); // 渐变终点的x坐标 | ||
| 169 | - linearGradient.setAttribute('y2', '0%'); // 渐变终点的y坐标 | ||
| 170 | - | ||
| 171 | - const stop1 = document.createElementNS('http://www.w3.org/2000/svg', 'stop'); | ||
| 172 | - stop1.setAttribute('offset', '10%'); | ||
| 173 | - stop1.setAttribute('style', `stop-color: ${card.titleBarColor[0]}; stop-opacity: 1`); | ||
| 174 | - linearGradient.appendChild(stop1); | ||
| 175 | - | ||
| 176 | - const stop2 = document.createElementNS('http://www.w3.org/2000/svg', 'stop'); | ||
| 177 | - stop2.setAttribute('offset', '100%'); | ||
| 178 | - stop2.setAttribute('style', `stop-color: ${card.titleBarColor[1]}; stop-opacity: 1`); | ||
| 179 | - linearGradient.appendChild(stop2); | ||
| 180 | - | ||
| 181 | - defs.appendChild(linearGradient); | ||
| 182 | - cardsContainer.appendChild(defs); | ||
| 183 | - | ||
| 184 | - | ||
| 185 | - | ||
| 186 | - const nodeSpacing = 50; | ||
| 187 | - const topBottomPadding = 20; | ||
| 188 | - const titleBarHeight = 30; // 标题栏高度 | ||
| 189 | - const maxLevel = Math.max(...card.nodes.map(node => node.level)) + 1; | ||
| 190 | - const cardHeight = maxLevel * nodeSpacing + topBottomPadding * 2 + titleBarHeight; | ||
| 191 | - | ||
| 192 | - const group = document.createElementNS('http://www.w3.org/2000/svg', 'g'); | ||
| 193 | - group.setAttribute('class', 'draggable card-container'); | ||
| 194 | - group.setAttribute('data-id', card.id); | ||
| 195 | - group.setAttribute('user-select', 'none'); | ||
| 196 | - group.setAttribute('transform', `translate(${card.x},${card.y})`); | ||
| 197 | - | ||
| 198 | - const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect'); | ||
| 199 | - rect.setAttribute('fill', '#222'); | ||
| 200 | - rect.setAttribute('width', 150); | ||
| 201 | - rect.setAttribute('style', 'cursor: auto;'); | ||
| 202 | - rect.setAttribute('height', cardHeight); | ||
| 203 | - rect.setAttribute('rx', 10); // 圆角 | ||
| 204 | - rect.setAttribute('ry', 10); | ||
| 205 | - group.appendChild(rect); | ||
| 206 | - | ||
| 207 | - // 使用path绘制带有指定圆角的矩形 | ||
| 208 | - // 创建标题栏 | ||
| 209 | - const titleBarWidth = 150; | ||
| 210 | - const borderRadius = 10; // 圆角大小 | ||
| 211 | - const titleBar = document.createElementNS('http://www.w3.org/2000/svg', 'path'); | ||
| 212 | - const dValue = `M 0,${borderRadius} | ||
| 213 | - a ${borderRadius},${borderRadius} 0 0 1 ${borderRadius},-${borderRadius} | ||
| 214 | - h ${titleBarWidth - borderRadius * 2} | ||
| 215 | - a ${borderRadius},${borderRadius} 0 0 1 ${borderRadius},${borderRadius} | ||
| 216 | - v ${titleBarHeight - borderRadius} | ||
| 217 | - h -${titleBarWidth} | ||
| 218 | - z`; | ||
| 219 | - titleBar.setAttribute('class', 'card'); | ||
| 220 | - titleBar.setAttribute('d', dValue); | ||
| 221 | - titleBar.setAttribute('fill', `url(#titleGradient-${card.id})`); | ||
| 222 | - group.appendChild(titleBar); | ||
| 223 | - | ||
| 224 | - const text = document.createElementNS('http://www.w3.org/2000/svg', 'text'); | ||
| 225 | - text.setAttribute('x', titleBarWidth / 2); | ||
| 226 | - text.setAttribute('y', titleBarHeight / 2); | ||
| 227 | - text.setAttribute('text-anchor', 'middle'); | ||
| 228 | - text.setAttribute('alignment-baseline', 'middle'); | ||
| 229 | - text.textContent = card.label; | ||
| 230 | - group.appendChild(text); | ||
| 231 | - | ||
| 232 | - card.nodes.forEach((node, index) => { | ||
| 233 | - | ||
| 234 | - | ||
| 235 | - const circle = document.createElementNS('http://www.w3.org/2000/svg', 'circle'); | ||
| 236 | - circle.setAttribute('class', 'node'); | ||
| 237 | - circle.setAttribute('cx', node.type === 'in' ? 0 : 150); | ||
| 238 | - circle.setAttribute('cy', topBottomPadding + titleBarHeight + (node.level + 1) * | ||
| 239 | - nodeSpacing - (nodeSpacing / 2)); | ||
| 240 | - circle.setAttribute('r', 7); | ||
| 241 | - circle.setAttribute('fill', node.color); | ||
| 242 | - circle.setAttribute('data-card-id', card.id); | ||
| 243 | - circle.setAttribute('data-node-id', `${card.id}-node${index + 1}`); | ||
| 244 | - group.appendChild(circle); | ||
| 245 | - | ||
| 246 | - let labelX = node.type === 'in' ? 12 : 138; // 基本的X坐标 | ||
| 247 | - const labelY = topBottomPadding + titleBarHeight + node.level * nodeSpacing + 21; | ||
| 248 | - | ||
| 249 | - // 创建SVG文本元素 | ||
| 250 | - const multiConnectedLabel = document.createElementNS('http://www.w3.org/2000/svg', | ||
| 251 | - 'text'); | ||
| 252 | - multiConnectedLabel.setAttribute('x', labelX); | ||
| 253 | - multiConnectedLabel.setAttribute('y', labelY); | ||
| 254 | - multiConnectedLabel.setAttribute('text-anchor', 'middle'); | ||
| 255 | - multiConnectedLabel.setAttribute('fill', '#aaa'); | ||
| 256 | - multiConnectedLabel.setAttribute('style', 'font-size: 8px;'); | ||
| 257 | - multiConnectedLabel.setAttribute('alignment-baseline', 'hanging'); | ||
| 258 | - | ||
| 259 | - | ||
| 260 | - // 计算文本的宽度(假定的,因为SVG没有直接获取文本宽度的方法) | ||
| 261 | - let estimatedTextLength; | ||
| 262 | - if (node.multiConnected == undefined) { | ||
| 263 | - estimatedTextLength = 20 | ||
| 264 | - multiConnectedLabel.textContent = 'N'; | ||
| 265 | - } else { | ||
| 266 | - estimatedTextLength = node.multiConnected.length; | ||
| 267 | - multiConnectedLabel.textContent = node.multiConnected; | ||
| 268 | - } | ||
| 269 | - | ||
| 270 | - // 确保文本不会超出卡片右边界 | ||
| 271 | - if (labelX + estimatedTextLength / 2 > 150) { | ||
| 272 | - labelX = 150 - estimatedTextLength / 2; | ||
| 273 | - nodeLabel.setAttribute('x', labelX); | ||
| 274 | - } | ||
| 275 | - | ||
| 276 | - // 确保文本不会超出卡片左边界 | ||
| 277 | - if (labelX - estimatedTextLength / 2 < 0) { | ||
| 278 | - labelX = estimatedTextLength / 2; | ||
| 279 | - nodeLabel.setAttribute('x', labelX); | ||
| 280 | - } | ||
| 281 | - | ||
| 282 | - group.appendChild(multiConnectedLabel); | ||
| 283 | - | ||
| 284 | - if (node.label != undefined) { | ||
| 285 | - // 计算文本标签的位置 | ||
| 286 | - let labelX = node.type === 'in' ? 15 : 135; // 基本的X坐标 | ||
| 287 | - const labelY = topBottomPadding + titleBarHeight + node.level * nodeSpacing + 40; | ||
| 288 | - | ||
| 289 | - // 创建SVG文本元素 | ||
| 290 | - const nodeLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text'); | ||
| 291 | - nodeLabel.setAttribute('x', labelX); | ||
| 292 | - nodeLabel.setAttribute('y', labelY); // 在节点下方留出一定空间 | ||
| 293 | - nodeLabel.setAttribute('text-anchor', 'middle'); // 文本居中对齐 | ||
| 294 | - nodeLabel.setAttribute('fill', '#aaa'); // 文本居中对齐 | ||
| 295 | - nodeLabel.setAttribute('alignment-baseline', 'hanging'); | ||
| 296 | - nodeLabel.textContent = node.label; | ||
| 297 | - | ||
| 298 | - // 计算文本的宽度(假定的,因为SVG没有直接获取文本宽度的方法) | ||
| 299 | - const estimatedTextLength = node.label.length * 10; // 估算每个字符6像素宽 | ||
| 300 | - | ||
| 301 | - // 确保文本不会超出卡片右边界 | ||
| 302 | - if (labelX + estimatedTextLength / 2 > 150) { | ||
| 303 | - labelX = 150 - estimatedTextLength / 2; | ||
| 304 | - nodeLabel.setAttribute('x', labelX); | ||
| 305 | - } | ||
| 306 | - | ||
| 307 | - // 确保文本不会超出卡片左边界 | ||
| 308 | - if (labelX - estimatedTextLength / 2 < 0) { | ||
| 309 | - labelX = estimatedTextLength / 2; | ||
| 310 | - nodeLabel.setAttribute('x', labelX); | ||
| 311 | - } | ||
| 312 | - | ||
| 313 | - group.appendChild(nodeLabel); | ||
| 314 | - | ||
| 315 | - } | ||
| 316 | - | ||
| 317 | - switch (node.slot) { | ||
| 318 | - case 'input': | ||
| 319 | - const foreignObject = document.createElementNS('http://www.w3.org/2000/svg', | ||
| 320 | - 'foreignObject'); | ||
| 321 | - foreignObject.setAttribute('x', 0); | ||
| 322 | - foreignObject.setAttribute('y', topBottomPadding + titleBarHeight + node.level * | ||
| 323 | - nodeSpacing + 12); | ||
| 324 | - foreignObject.setAttribute('width', 130); // 保持原始宽度 | ||
| 325 | - foreignObject.setAttribute('height', nodeSpacing - 24); // 保持原始高度,减去的24像素为上下内边距之和 | ||
| 326 | - const input = document.createElement('input'); | ||
| 327 | - input.type = 'text'; | ||
| 328 | - if (node.value == undefined) { | ||
| 329 | - node.value = ''; | ||
| 330 | - } | ||
| 331 | - input.value = node.value; | ||
| 332 | - input.addEventListener('input', function () { | ||
| 333 | - node.value = input.value; | ||
| 334 | - }); | ||
| 335 | - // Set adjusted input styles | ||
| 336 | - input.style.width = '110px'; | ||
| 337 | - input.style.height = '100%'; | ||
| 338 | - input.style.marginLeft = '20px'; | ||
| 339 | - input.style.borderRadius = '5px'; | ||
| 340 | - input.style.border = '1px solid white'; | ||
| 341 | - input.style.backgroundColor = '#222'; | ||
| 342 | - input.style.color = 'white'; | ||
| 343 | - input.style.fontSize = '1em'; | ||
| 344 | - input.style.padding = '0px'; // 可能需要调整或去除内边距以适应固定尺寸 | ||
| 345 | - input.style.boxSizing = 'border-box'; // 确保宽高包含内容、内边距和边框 | ||
| 346 | - | ||
| 347 | - // Change border color on focus and blur | ||
| 348 | - input.addEventListener('focus', () => { | ||
| 349 | - input.style.outline = 'none'; // Remove default focus outline | ||
| 350 | - input.style.borderColor = | ||
| 351 | - 'white'; // Keep border color white on focus | ||
| 352 | - }); | ||
| 353 | - | ||
| 354 | - input.addEventListener('blur', () => { | ||
| 355 | - input.style.borderColor = | ||
| 356 | - 'white'; // Revert to white when not focused | ||
| 357 | - }); | ||
| 358 | - | ||
| 359 | - // 阻止事件冒泡 | ||
| 360 | - input.addEventListener('click', function (event) { | ||
| 361 | - event.stopPropagation(); | ||
| 362 | - }); | ||
| 363 | - | ||
| 364 | - input.addEventListener('mousedown', function (event) { | ||
| 365 | - event.stopPropagation(); | ||
| 366 | - }); | ||
| 367 | - | ||
| 368 | - input.addEventListener('touchstart', function (event) { | ||
| 369 | - event.stopPropagation(); | ||
| 370 | - }); | ||
| 371 | - | ||
| 372 | - foreignObject.appendChild(input); | ||
| 373 | - group.appendChild(foreignObject); | ||
| 374 | - break; | ||
| 375 | - } | ||
| 376 | - | ||
| 377 | - | ||
| 378 | - | ||
| 379 | - }); | ||
| 380 | - | ||
| 381 | - const deleteIcon = document.createElementNS('http://www.w3.org/2000/svg', 'rect'); | ||
| 382 | - deleteIcon.setAttribute('class', 'card-delete-icon'); | ||
| 383 | - deleteIcon.setAttribute('x', 125); | ||
| 384 | - deleteIcon.setAttribute('y', 5); // 使其贴近标题栏的右上角 | ||
| 385 | - deleteIcon.setAttribute('width', 20); | ||
| 386 | - deleteIcon.setAttribute('height', 20); | ||
| 387 | - deleteIcon.setAttribute('fill', 'transparent'); | ||
| 388 | - deleteIcon.setAttribute('data-card-id', card.id); | ||
| 389 | - deleteIcon.setAttribute('style', 'cursor: pointer;'); | ||
| 390 | - group.appendChild(de,eIcon); | ||
| 391 | - | ||
| 392 | - const delText = document.createElementNS('http://www.w3.org/2000/svg', 'text'); | ||
| 393 | - delText.setAttribute('x', 135); | ||
| 394 | - delText.setAttribute('y', 20); // 调整位置以垂直居中 | ||
| 395 | - delText.setAttribute('text-anchor', 'middle'); | ||
| 396 | - delText.setAttribute('fill', 'white'); | ||
| 397 | - delText.setAttribute('font-size', '16px'); // 适当调整字体大小以适应图标 | ||
| 398 | - delText.setAttribute('pointer-events', 'none'); // 确保点击事件只触发于删除图标上 | ||
| 399 | - delText.textContent = '×'; | ||
| 400 | - group.appendChild(delText); | ||
| 401 | - | ||
| 402 | - cardsContainer.appendChild(group); | ||
| 403 | - | ||
| 404 | - attachNodeEventListeners(); | ||
| 405 | - } | ||
| 406 | - | ||
| 407 | - | ||
| 408 | - | ||
| 409 | - | ||
| 410 | - | ||
| 411 | - updateForm(); | ||
| 412 | - updateJSONOutput(); | ||
| 413 | - drawCard(); | ||
| 414 | - </script> | ||
| 415 | -</body> | ||
| 416 | -</html> |
src/main/resources/static/pages/zndd_yuan/Blueprint.Net.Server/wwwroot/index.html deleted
100644 → 0
| 1 | -<!-- | ||
| 2 | -<!DOCTYPE html> | ||
| 3 | -<html lang="zh-cn"> | ||
| 4 | - | ||
| 5 | - <head> | ||
| 6 | - <meta charset="UTF-8"> | ||
| 7 | - <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||
| 8 | - <title>Blueprint</title> | ||
| 9 | - <style> | ||
| 10 | - body, | ||
| 11 | - html { | ||
| 12 | - margin: 0; | ||
| 13 | - padding: 0; | ||
| 14 | - width: 100%; | ||
| 15 | - height: 100%; | ||
| 16 | - overflow: hidden; | ||
| 17 | - } | ||
| 18 | - | ||
| 19 | - /* 弹窗容器样式 */ | ||
| 20 | - #card-creation-modal { | ||
| 21 | - border: 1px solid #444; | ||
| 22 | - background: linear-gradient(145deg, #333, #555); | ||
| 23 | - padding: 5px; | ||
| 24 | - z-index: 100; | ||
| 25 | - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); | ||
| 26 | - border-radius: 5px; | ||
| 27 | - overflow: hidden; | ||
| 28 | - margin: 0; | ||
| 29 | - user-select: none; | ||
| 30 | - } | ||
| 31 | - | ||
| 32 | - #card-type-list { | ||
| 33 | - | ||
| 34 | - padding-left: 0px; | ||
| 35 | - } | ||
| 36 | - | ||
| 37 | - /* 列表项基础样式 */ | ||
| 38 | - #card-type-list li { | ||
| 39 | - list-style: none; | ||
| 40 | - /* 去除列表项目符号 */ | ||
| 41 | - padding: 8px 15px; | ||
| 42 | - /* 减少垂直内边距使其更紧凑 */ | ||
| 43 | - border-bottom: 1px solid #666; | ||
| 44 | - /* 暗色底部边框线 */ | ||
| 45 | - color: #ddd; | ||
| 46 | - /* 暗色系字体颜色 */ | ||
| 47 | - cursor: pointer; | ||
| 48 | - /* 鼠标指针样式 */ | ||
| 49 | - margin-left: 0; | ||
| 50 | - /* 消除左边间隙 */ | ||
| 51 | - | ||
| 52 | - } | ||
| 53 | - | ||
| 54 | - /* 列表项高亮样式 */ | ||
| 55 | - #card-type-list li:hover, | ||
| 56 | - #card-type-list li:focus { | ||
| 57 | - background-color: #777; | ||
| 58 | - /* 暗色背景颜色 */ | ||
| 59 | - color: #fff; | ||
| 60 | - /* 高亮字体颜色 */ | ||
| 61 | - } | ||
| 62 | - | ||
| 63 | - /* 最后一个列表项的底部边框 */ | ||
| 64 | - #card-type-list li:last-child { | ||
| 65 | - border-bottom: none; | ||
| 66 | - } | ||
| 67 | - | ||
| 68 | - .grid-background { | ||
| 69 | - background-color: #292929; | ||
| 70 | - background-image: | ||
| 71 | - linear-gradient(to right, black 1px, transparent 1px), | ||
| 72 | - linear-gradient(to bottom, black 1px, transparent 1px), | ||
| 73 | - linear-gradient(to right, #404040 1px, transparent 1px), | ||
| 74 | - linear-gradient(to bottom, #404040 1px, transparent 1px); | ||
| 75 | - background-size: | ||
| 76 | - 100px 100px, | ||
| 77 | - 100px 100px, | ||
| 78 | - 10px 10px, | ||
| 79 | - 10px 10px; | ||
| 80 | - width: 100%; | ||
| 81 | - height: 100%; | ||
| 82 | - } | ||
| 83 | - | ||
| 84 | - .draggable { | ||
| 85 | - cursor: grab; | ||
| 86 | - } | ||
| 87 | - | ||
| 88 | - .node { | ||
| 89 | - | ||
| 90 | - cursor: pointer; | ||
| 91 | - } | ||
| 92 | - | ||
| 93 | - .link { | ||
| 94 | - stroke: black; | ||
| 95 | - stroke-width: 2; | ||
| 96 | - } | ||
| 97 | - | ||
| 98 | - .card { | ||
| 99 | - /* fill: lightgrey; | ||
| 100 | - stroke: black; */ | ||
| 101 | - | ||
| 102 | - stroke-width: 1; | ||
| 103 | - user-select: none; | ||
| 104 | - } | ||
| 105 | - | ||
| 106 | - text { | ||
| 107 | - pointer-events: none; | ||
| 108 | - user-select: none; | ||
| 109 | - } | ||
| 110 | - </style> | ||
| 111 | - </head> | ||
| 112 | - | ||
| 113 | - <body> | ||
| 114 | - <!– 弹窗容器 –> | ||
| 115 | - <div id="card-creation-modal" | ||
| 116 | - style="display:none; position: absolute; border: 1px solid #ccc; background-color: #fff; padding: 10px; z-index: 100;"> | ||
| 117 | - <!– 搜索结果列表 –> | ||
| 118 | - <ul id="card-type-list"></ul> | ||
| 119 | - </div> | ||
| 120 | - | ||
| 121 | - | ||
| 122 | - | ||
| 123 | - <svg style="width: 100%;height: 100%;" id="svgContainer" class="grid-background"> | ||
| 124 | - <g id="linksContainer"></g> <!– 用于存放线条 –> | ||
| 125 | - <g id="cardsContainer"></g> <!– 用于存放卡片 –> | ||
| 126 | - </svg> | ||
| 127 | - | ||
| 128 | - <script> | ||
| 129 | - let cards = [{ | ||
| 130 | - id: 'card0', | ||
| 131 | - x: 0, | ||
| 132 | - y: 0, | ||
| 133 | - label: 'Start', | ||
| 134 | - type: "start", | ||
| 135 | - nodes: [{ | ||
| 136 | - type: "out", | ||
| 137 | - level: 0, | ||
| 138 | - enumType: 'call', | ||
| 139 | - color: '#fff', | ||
| 140 | - multiConnected: 1 | ||
| 141 | - }, ], | ||
| 142 | - titleBarColor: ['#84fab0', '#8fd3f4'] | ||
| 143 | - }, | ||
| 144 | - { | ||
| 145 | - id: 'card1', | ||
| 146 | - x: 100, | ||
| 147 | - y: 200, | ||
| 148 | - label: 'Condition', | ||
| 149 | - type: "condition", | ||
| 150 | - nodes: [{ | ||
| 151 | - type: "in", | ||
| 152 | - level: 0, | ||
| 153 | - enumType: 'call', | ||
| 154 | - color: '#fff' | ||
| 155 | - }, | ||
| 156 | - { | ||
| 157 | - type: "in", | ||
| 158 | - level: 1, | ||
| 159 | - enumType: 'int', | ||
| 160 | - color: '#28C76F', | ||
| 161 | - slot: 'input', | ||
| 162 | - label: 'int', | ||
| 163 | - multiConnected: 1 | ||
| 164 | - }, | ||
| 165 | - { | ||
| 166 | - type: "in", | ||
| 167 | - level: 2, | ||
| 168 | - enumType: 'int', | ||
| 169 | - color: '#28C76F', | ||
| 170 | - slot: 'input', | ||
| 171 | - label: 'int', | ||
| 172 | - multiConnected: 1 | ||
| 173 | - }, | ||
| 174 | - { | ||
| 175 | - type: "out", | ||
| 176 | - level: 0, | ||
| 177 | - enumType: 'call', | ||
| 178 | - color: '#fff' | ||
| 179 | - }, | ||
| 180 | - { | ||
| 181 | - type: "out", | ||
| 182 | - level: 1, | ||
| 183 | - enumType: 'bool', | ||
| 184 | - color: '#0396FF', | ||
| 185 | - label: 'bool', | ||
| 186 | - multiConnected: 1 | ||
| 187 | - }, | ||
| 188 | - ], | ||
| 189 | - titleBarColor: ['#fccb90', '#d57eeb'] | ||
| 190 | - }, | ||
| 191 | - { | ||
| 192 | - id: 'card2', | ||
| 193 | - x: 300, | ||
| 194 | - y: 400, | ||
| 195 | - label: 'BoolToString', | ||
| 196 | - type: "call", | ||
| 197 | - nodes: [{ | ||
| 198 | - type: "in", | ||
| 199 | - level: 0, | ||
| 200 | - enumType: 'call', | ||
| 201 | - color: '#fff' | ||
| 202 | - }, | ||
| 203 | - { | ||
| 204 | - type: "in", | ||
| 205 | - level: 1, | ||
| 206 | - enumType: 'bool', | ||
| 207 | - color: '#0396FF', | ||
| 208 | - label: 'bool', | ||
| 209 | - multiConnected: 1 | ||
| 210 | - }, | ||
| 211 | - { | ||
| 212 | - type: "out", | ||
| 213 | - level: 0, | ||
| 214 | - enumType: 'call', | ||
| 215 | - color: '#fff' | ||
| 216 | - }, | ||
| 217 | - { | ||
| 218 | - type: "out", | ||
| 219 | - level: 1, | ||
| 220 | - enumType: 'string', | ||
| 221 | - color: '#DE4313', | ||
| 222 | - label: 'string', | ||
| 223 | - multiConnected: 1 | ||
| 224 | - } | ||
| 225 | - ], | ||
| 226 | - titleBarColor: ['#3C8CE7', '#00EAFF'] | ||
| 227 | - | ||
| 228 | - }, | ||
| 229 | - { | ||
| 230 | - id: 'card3', | ||
| 231 | - x: 100, | ||
| 232 | - y: 300, | ||
| 233 | - label: 'Print', | ||
| 234 | - type: "print", | ||
| 235 | - nodes: [{ | ||
| 236 | - type: "in", | ||
| 237 | - level: 0, | ||
| 238 | - enumType: 'call', | ||
| 239 | - color: '#fff' | ||
| 240 | - }, | ||
| 241 | - { | ||
| 242 | - type: "in", | ||
| 243 | - level: 1, | ||
| 244 | - enumType: 'string', | ||
| 245 | - color: '#DE4313', | ||
| 246 | - label: 'string', | ||
| 247 | - multiConnected: 1 | ||
| 248 | - } | ||
| 249 | - ], | ||
| 250 | - titleBarColor: ['#f6d365', '#fda085'] | ||
| 251 | - } | ||
| 252 | - ]; | ||
| 253 | - | ||
| 254 | - | ||
| 255 | - let links = []; | ||
| 256 | - let currentLink = null; | ||
| 257 | - let isDragging = false; | ||
| 258 | - let isLinking = false; | ||
| 259 | - let dragOffsetX, dragOffsetY; | ||
| 260 | - let currentCard; | ||
| 261 | - | ||
| 262 | - function init() { | ||
| 263 | - drawLinks(); | ||
| 264 | - drawCards(); | ||
| 265 | - attachEventListeners(); | ||
| 266 | - } | ||
| 267 | - | ||
| 268 | - function drawCards() { | ||
| 269 | - const cardsContainer = document.getElementById('cardsContainer'); | ||
| 270 | - cardsContainer.innerHTML = ''; // 清除现有的卡片 | ||
| 271 | - | ||
| 272 | - cards.forEach(card => { | ||
| 273 | - | ||
| 274 | - //创建标题栏渐变色 | ||
| 275 | - const defs = document.createElementNS('http://www.w3.org/2000/svg', 'defs'); | ||
| 276 | - const linearGradient = document.createElementNS('http://www.w3.org/2000/svg', 'linearGradient'); | ||
| 277 | - linearGradient.setAttribute('id', `titleGradient-${card.id}`); | ||
| 278 | - linearGradient.setAttribute('x1', '0%'); // 渐变起点的x坐标 | ||
| 279 | - linearGradient.setAttribute('y1', '100%'); // 渐变起点的y坐标 | ||
| 280 | - linearGradient.setAttribute('x2', '100%'); // 渐变终点的x坐标 | ||
| 281 | - linearGradient.setAttribute('y2', '0%'); // 渐变终点的y坐标 | ||
| 282 | - | ||
| 283 | - const stop1 = document.createElementNS('http://www.w3.org/2000/svg', 'stop'); | ||
| 284 | - stop1.setAttribute('offset', '10%'); | ||
| 285 | - stop1.setAttribute('style', `stop-color: ${card.titleBarColor[0]}; stop-opacity: 1`); | ||
| 286 | - linearGradient.appendChild(stop1); | ||
| 287 | - | ||
| 288 | - const stop2 = document.createElementNS('http://www.w3.org/2000/svg', 'stop'); | ||
| 289 | - stop2.setAttribute('offset', '100%'); | ||
| 290 | - stop2.setAttribute('style', `stop-color: ${card.titleBarColor[1]}; stop-opacity: 1`); | ||
| 291 | - linearGradient.appendChild(stop2); | ||
| 292 | - | ||
| 293 | - defs.appendChild(linearGradient); | ||
| 294 | - cardsContainer.appendChild(defs); | ||
| 295 | - | ||
| 296 | - | ||
| 297 | - | ||
| 298 | - const nodeSpacing = 50; | ||
| 299 | - const topBottomPadding = 20; | ||
| 300 | - const titleBarHeight = 30; // 标题栏高度 | ||
| 301 | - const maxLevel = Math.max(...card.nodes.map(node => node.level)) + 1; | ||
| 302 | - const cardHeight = maxLevel * nodeSpacing + topBottomPadding * 2 + titleBarHeight; | ||
| 303 | - | ||
| 304 | - const group = document.createElementNS('http://www.w3.org/2000/svg', 'g'); | ||
| 305 | - group.setAttribute('class', 'draggable card-container'); | ||
| 306 | - group.setAttribute('data-id', card.id); | ||
| 307 | - group.setAttribute('user-select', 'none'); | ||
| 308 | - group.setAttribute('transform', `translate(${card.x},${card.y})`); | ||
| 309 | - | ||
| 310 | - const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect'); | ||
| 311 | - rect.setAttribute('fill', '#222'); | ||
| 312 | - rect.setAttribute('width', 150); | ||
| 313 | - rect.setAttribute('style', 'cursor: auto;'); | ||
| 314 | - rect.setAttribute('height', cardHeight); | ||
| 315 | - rect.setAttribute('rx', 10); // 圆角 | ||
| 316 | - rect.setAttribute('ry', 10); | ||
| 317 | - group.appendChild(rect); | ||
| 318 | - | ||
| 319 | - // 使用path绘制带有指定圆角的矩形 | ||
| 320 | - // 创建标题栏 | ||
| 321 | - const titleBarWidth = 150; | ||
| 322 | - const borderRadius = 10; // 圆角大小 | ||
| 323 | - const titleBar = document.createElementNS('http://www.w3.org/2000/svg', 'path'); | ||
| 324 | - const dValue = `M 0,${borderRadius} | ||
| 325 | - a ${borderRadius},${borderRadius} 0 0 1 ${borderRadius},-${borderRadius} | ||
| 326 | - h ${titleBarWidth - borderRadius * 2} | ||
| 327 | - a ${borderRadius},${borderRadius} 0 0 1 ${borderRadius},${borderRadius} | ||
| 328 | - v ${titleBarHeight - borderRadius} | ||
| 329 | - h -${titleBarWidth} | ||
| 330 | - z`; | ||
| 331 | - titleBar.setAttribute('class', 'card'); | ||
| 332 | - titleBar.setAttribute('d', dValue); | ||
| 333 | - titleBar.setAttribute('fill', `url(#titleGradient-${card.id})`); | ||
| 334 | - group.appendChild(titleBar); | ||
| 335 | - | ||
| 336 | - const text = document.createElementNS('http://www.w3.org/2000/svg', 'text'); | ||
| 337 | - text.setAttribute('x', titleBarWidth / 2); | ||
| 338 | - text.setAttribute('y', titleBarHeight / 2); | ||
| 339 | - text.setAttribute('text-anchor', 'middle'); | ||
| 340 | - text.setAttribute('alignment-baseline', 'middle'); | ||
| 341 | - text.textContent = card.label; | ||
| 342 | - group.appendChild(text); | ||
| 343 | - | ||
| 344 | - card.nodes.forEach((node, index) => { | ||
| 345 | - | ||
| 346 | - | ||
| 347 | - const circle = document.createElementNS('http://www.w3.org/2000/svg', 'circle'); | ||
| 348 | - circle.setAttribute('class', 'node'); | ||
| 349 | - circle.setAttribute('cx', node.type === 'in' ? 0 : 150); | ||
| 350 | - circle.setAttribute('cy', topBottomPadding + titleBarHeight + (node.level + 1) * | ||
| 351 | - nodeSpacing - (nodeSpacing / 2)); | ||
| 352 | - circle.setAttribute('r', 7); | ||
| 353 | - circle.setAttribute('fill', node.color); | ||
| 354 | - circle.setAttribute('data-card-id', card.id); | ||
| 355 | - circle.setAttribute('data-node-id', `${card.id}-node${index + 1}`); | ||
| 356 | - group.appendChild(circle); | ||
| 357 | - | ||
| 358 | - let labelX = node.type === 'in' ? 12 : 138; // 基本的X坐标 | ||
| 359 | - const labelY = topBottomPadding + titleBarHeight + node.level * nodeSpacing + 21; | ||
| 360 | - | ||
| 361 | - // 创建SVG文本元素 | ||
| 362 | - const multiConnectedLabel = document.createElementNS('http://www.w3.org/2000/svg', | ||
| 363 | - 'text'); | ||
| 364 | - multiConnectedLabel.setAttribute('x', labelX); | ||
| 365 | - multiConnectedLabel.setAttribute('y', labelY); | ||
| 366 | - multiConnectedLabel.setAttribute('text-anchor', 'middle'); | ||
| 367 | - multiConnectedLabel.setAttribute('fill', '#aaa'); | ||
| 368 | - multiConnectedLabel.setAttribute('style', 'font-size: 8px;'); | ||
| 369 | - multiConnectedLabel.setAttribute('alignment-baseline', 'hanging'); | ||
| 370 | - | ||
| 371 | - | ||
| 372 | - // 计算文本的宽度(假定的,因为SVG没有直接获取文本宽度的方法) | ||
| 373 | - let estimatedTextLength; | ||
| 374 | - if (node.multiConnected == undefined) { | ||
| 375 | - estimatedTextLength = 20 | ||
| 376 | - multiConnectedLabel.textContent = 'N'; | ||
| 377 | - } else { | ||
| 378 | - estimatedTextLength = node.multiConnected.length; | ||
| 379 | - multiConnectedLabel.textContent = node.multiConnected; | ||
| 380 | - } | ||
| 381 | - | ||
| 382 | - // 确保文本不会超出卡片右边界 | ||
| 383 | - if (labelX + estimatedTextLength / 2 > 150) { | ||
| 384 | - labelX = 150 - estimatedTextLength / 2; | ||
| 385 | - nodeLabel.setAttribute('x', labelX); | ||
| 386 | - } | ||
| 387 | - | ||
| 388 | - // 确保文本不会超出卡片左边界 | ||
| 389 | - if (labelX - estimatedTextLength / 2 < 0) { | ||
| 390 | - labelX = estimatedTextLength / 2; | ||
| 391 | - nodeLabel.setAttribute('x', labelX); | ||
| 392 | - } | ||
| 393 | - | ||
| 394 | - group.appendChild(multiConnectedLabel); | ||
| 395 | - | ||
| 396 | - if (node.label != undefined) { | ||
| 397 | - // 计算文本标签的位置 | ||
| 398 | - let labelX = node.type === 'in' ? 15 : 135; // 基本的X坐标 | ||
| 399 | - const labelY = topBottomPadding + titleBarHeight + node.level * nodeSpacing + 40; | ||
| 400 | - | ||
| 401 | - // 创建SVG文本元素 | ||
| 402 | - const nodeLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text'); | ||
| 403 | - nodeLabel.setAttribute('x', labelX); | ||
| 404 | - nodeLabel.setAttribute('y', labelY); // 在节点下方留出一定空间 | ||
| 405 | - nodeLabel.setAttribute('text-anchor', 'middle'); // 文本居中对齐 | ||
| 406 | - nodeLabel.setAttribute('fill', '#aaa'); // 文本居中对齐 | ||
| 407 | - nodeLabel.setAttribute('alignment-baseline', 'hanging'); | ||
| 408 | - nodeLabel.textContent = node.label; | ||
| 409 | - | ||
| 410 | - // 计算文本的宽度(假定的,因为SVG没有直接获取文本宽度的方法) | ||
| 411 | - const estimatedTextLength = node.label.length * 10; // 估算每个字符6像素宽 | ||
| 412 | - | ||
| 413 | - // 确保文本不会超出卡片右边界 | ||
| 414 | - if (labelX + estimatedTextLength / 2 > 150) { | ||
| 415 | - labelX = 150 - estimatedTextLength / 2; | ||
| 416 | - nodeLabel.setAttribute('x', labelX); | ||
| 417 | - } | ||
| 418 | - | ||
| 419 | - // 确保文本不会超出卡片左边界 | ||
| 420 | - if (labelX - estimatedTextLength / 2 < 0) { | ||
| 421 | - labelX = estimatedTextLength / 2; | ||
| 422 | - nodeLabel.setAttribute('x', labelX); | ||
| 423 | - } | ||
| 424 | - | ||
| 425 | - group.appendChild(nodeLabel); | ||
| 426 | - | ||
| 427 | - } | ||
| 428 | - | ||
| 429 | - switch (node.slot) { | ||
| 430 | - case 'input': | ||
| 431 | - const foreignObject = document.createElementNS('http://www.w3.org/2000/svg', | ||
| 432 | - 'foreignObject'); | ||
| 433 | - foreignObject.setAttribute('x', 0); | ||
| 434 | - foreignObject.setAttribute('y', topBottomPadding + titleBarHeight + node.level * | ||
| 435 | - nodeSpacing + 12); | ||
| 436 | - foreignObject.setAttribute('width', 130); // 保持原始宽度 | ||
| 437 | - foreignObject.setAttribute('height', nodeSpacing - 24); // 保持原始高度,减去的24像素为上下内边距之和 | ||
| 438 | - const input = document.createElement('input'); | ||
| 439 | - input.type = 'text'; | ||
| 440 | - if (node.value == undefined) { | ||
| 441 | - node.value = ''; | ||
| 442 | - } | ||
| 443 | - input.value = node.value; | ||
| 444 | - input.addEventListener('input', function() { | ||
| 445 | - node.value = input.value; | ||
| 446 | - }); | ||
| 447 | - // Set adjusted input styles | ||
| 448 | - input.style.width = '110px'; | ||
| 449 | - input.style.height = '100%'; | ||
| 450 | - input.style.marginLeft = '20px'; | ||
| 451 | - input.style.borderRadius = '5px'; | ||
| 452 | - input.style.border = '1px solid white'; | ||
| 453 | - input.style.backgroundColor = '#222'; | ||
| 454 | - input.style.color = 'white'; | ||
| 455 | - input.style.fontSize = '1em'; | ||
| 456 | - input.style.padding = '0px'; // 可能需要调整或去除内边距以适应固定尺寸 | ||
| 457 | - input.style.boxSizing = 'border-box'; // 确保宽高包含内容、内边距和边框 | ||
| 458 | - | ||
| 459 | - // Change border color on focus and blur | ||
| 460 | - input.addEventListener('focus', () => { | ||
| 461 | - input.style.outline = 'none'; // Remove default focus outline | ||
| 462 | - input.style.borderColor = | ||
| 463 | - 'white'; // Keep border color white on focus | ||
| 464 | - }); | ||
| 465 | - | ||
| 466 | - input.addEventListener('blur', () => { | ||
| 467 | - input.style.borderColor = | ||
| 468 | - 'white'; // Revert to white when not focused | ||
| 469 | - }); | ||
| 470 | - | ||
| 471 | - // 阻止事件冒泡 | ||
| 472 | - input.addEventListener('click', function(event) { | ||
| 473 | - event.stopPropagation(); | ||
| 474 | - }); | ||
| 475 | - | ||
| 476 | - input.addEventListener('mousedown', function(event) { | ||
| 477 | - event.stopPropagation(); | ||
| 478 | - }); | ||
| 479 | - | ||
| 480 | - input.addEventListener('touchstart', function(event) { | ||
| 481 | - event.stopPropagation(); | ||
| 482 | - }); | ||
| 483 | - | ||
| 484 | - foreignObject.appendChild(input); | ||
| 485 | - group.appendChild(foreignObject); | ||
| 486 | - break; | ||
| 487 | - } | ||
| 488 | - | ||
| 489 | - | ||
| 490 | - | ||
| 491 | - }); | ||
| 492 | - | ||
| 493 | - const deleteIcon = document.createElementNS('http://www.w3.org/2000/svg', 'rect'); | ||
| 494 | - deleteIcon.setAttribute('class', 'card-delete-icon'); | ||
| 495 | - deleteIcon.setAttribute('x', 125); | ||
| 496 | - deleteIcon.setAttribute('y', 5); // 使其贴近标题栏的右上角 | ||
| 497 | - deleteIcon.setAttribute('width', 20); | ||
| 498 | - deleteIcon.setAttribute('height', 20); | ||
| 499 | - deleteIcon.setAttribute('fill', 'transparent'); | ||
| 500 | - deleteIcon.setAttribute('data-card-id', card.id); | ||
| 501 | - deleteIcon.setAttribute('style', 'cursor: pointer;'); | ||
| 502 | - group.appendChild(deleteIcon); | ||
| 503 | - | ||
| 504 | - const delText = document.createElementNS('http://www.w3.org/2000/svg', 'text'); | ||
| 505 | - delText.setAttribute('x', 135); | ||
| 506 | - delText.setAttribute('y', 20); // 调整位置以垂直居中 | ||
| 507 | - delText.setAttribute('text-anchor', 'middle'); | ||
| 508 | - delText.setAttribute('fill', 'white'); | ||
| 509 | - delText.setAttribute('font-size', '16px'); // 适当调整字体大小以适应图标 | ||
| 510 | - delText.setAttribute('pointer-events', 'none'); // 确保点击事件只触发于删除图标上 | ||
| 511 | - delText.textContent = '×'; | ||
| 512 | - group.appendChild(delText); | ||
| 513 | - | ||
| 514 | - cardsContainer.appendChild(group); | ||
| 515 | - }); | ||
| 516 | - | ||
| 517 | - attachNodeEventListeners(); | ||
| 518 | - } | ||
| 519 | - | ||
| 520 | - | ||
| 521 | - | ||
| 522 | - function drawLinks() { | ||
| 523 | - const linksContainer = document.getElementById('linksContainer'); | ||
| 524 | - linksContainer.innerHTML = ''; // 清除现有的线条 | ||
| 525 | - // 清除旧的删除图标 | ||
| 526 | - document.querySelectorAll('.delete-icon').forEach(icon => icon.remove()); | ||
| 527 | - | ||
| 528 | - links.forEach((link, index) => { | ||
| 529 | - const path = document.createElementNS('http://www.w3.org/2000/svg', 'path'); | ||
| 530 | - //path.setAttribute('class', 'link'); | ||
| 531 | - path.setAttribute('stroke', link.target.color) | ||
| 532 | - path.setAttribute('stroke-width', 5) | ||
| 533 | - path.setAttribute('fill', 'none'); | ||
| 534 | - | ||
| 535 | - | ||
| 536 | - const isCallType = link.source.enumType === 'call'; | ||
| 537 | - if (isCallType) { | ||
| 538 | - path.setAttribute('stroke-dasharray', '10'); | ||
| 539 | - path.setAttribute('stroke-dashoffset', '0'); | ||
| 540 | - | ||
| 541 | - // Add animation element to the path for dashed lines | ||
| 542 | - const animate = document.createElementNS('http://www.w3.org/2000/svg', 'animate'); | ||
| 543 | - animate.setAttribute('attributeName', 'stroke-dashoffset'); | ||
| 544 | - animate.setAttribute('dur', '0.5s'); | ||
| 545 | - animate.setAttribute('repeatCount', 'indefinite'); | ||
| 546 | - animate.setAttribute('from', '20'); | ||
| 547 | - animate.setAttribute('to', '0'); | ||
| 548 | - path.appendChild(animate); | ||
| 549 | - } | ||
| 550 | - | ||
| 551 | - | ||
| 552 | - let dist; | ||
| 553 | - // 使用动态计算的控制点距离来定义曲线,根据源点和终点的X坐标差异动态计算控制点的距离 | ||
| 554 | - if (link.source.type === 'out') { | ||
| 555 | - if (link.source.x - link.target.x > 0) { | ||
| 556 | - dist = 200; // 如果终点在源点的左侧,控制点距离更远 | ||
| 557 | - } else { | ||
| 558 | - dist = Math.abs(link.target.x - link.source.x) * 0.3; // 否则,根据两点间的距离调整控制点距离 | ||
| 559 | - } | ||
| 560 | - const d = | ||
| 561 | - `M${link.source.x} ${link.source.y} C${link.source.x + dist} ${link.source.y} ${link.target.x - dist} ${link.target.y} ${link.target.x} ${link.target.y}`; | ||
| 562 | - path.setAttribute('d', d); | ||
| 563 | - linksContainer.appendChild(path); | ||
| 564 | - } else { | ||
| 565 | - if (link.target.x - link.source.x > 0) { | ||
| 566 | - dist = 200; // 如果终点在源点的右侧,控制点距离更远 | ||
| 567 | - } else { | ||
| 568 | - dist = Math.abs(link.target.x - link.source.x) * 0.3; // 否则,根据两点间的距离调整控制点距离 | ||
| 569 | - } | ||
| 570 | - const d = | ||
| 571 | - `M${link.source.x} ${link.source.y} C${link.source.x - dist} ${link.source.y} ${link.target.x + dist} ${link.target.y} ${link.target.x} ${link.target.y}`; | ||
| 572 | - path.setAttribute('d', d); | ||
| 573 | - linksContainer.appendChild(path); | ||
| 574 | - } | ||
| 575 | - | ||
| 576 | - | ||
| 577 | - // 计算中点 | ||
| 578 | - const midX = (link.source.x + link.target.x) / 2; | ||
| 579 | - const midY = (link.source.y + link.target.y) / 2; | ||
| 580 | - | ||
| 581 | - // 绘制删除图标 | ||
| 582 | - const deleteIcon = document.createElementNS('http://www.w3.org/2000/svg', 'circle'); | ||
| 583 | - deleteIcon.setAttribute('class', 'delete-icon'); | ||
| 584 | - deleteIcon.setAttribute('cx', midX); | ||
| 585 | - deleteIcon.setAttribute('cy', midY); | ||
| 586 | - deleteIcon.setAttribute('style', "cursor: pointer;"); | ||
| 587 | - deleteIcon.setAttribute('r', 10); | ||
| 588 | - deleteIcon.setAttribute('fill', 'red'); | ||
| 589 | - deleteIcon.setAttribute('data-link-level', index); // 用于标识该删除图标对应的线 | ||
| 590 | - linksContainer.appendChild(deleteIcon); | ||
| 591 | - | ||
| 592 | - // 可以选择添加一个×文本在圆圈中间 | ||
| 593 | - const text = document.createElementNS('http://www.w3.org/2000/svg', 'text'); | ||
| 594 | - text.setAttribute('x', midX); | ||
| 595 | - text.setAttribute('y', midY + 5); // 轻微调整以垂直居中 | ||
| 596 | - text.setAttribute('text-anchor', 'middle'); | ||
| 597 | - text.setAttribute('fill', 'white'); | ||
| 598 | - text.setAttribute('font-size', '15px'); | ||
| 599 | - text.setAttribute('pointer-events', 'none'); // 确保点击事件只触发于圆圈上 | ||
| 600 | - text.textContent = '×'; | ||
| 601 | - linksContainer.appendChild(text); | ||
| 602 | - | ||
| 603 | - }); | ||
| 604 | - } | ||
| 605 | - | ||
| 606 | - // 定义变量来追踪是否正在拖动以及拖动的起始位置 | ||
| 607 | - let isPanning = false; | ||
| 608 | - let startPan = { | ||
| 609 | - x: 0, | ||
| 610 | - y: 0 | ||
| 611 | - }; | ||
| 612 | - | ||
| 613 | - // 用于调整SVG视图窗口的变量 | ||
| 614 | - let currentPan = { | ||
| 615 | - x: 0, | ||
| 616 | - y: 0 | ||
| 617 | - }; | ||
| 618 | - | ||
| 619 | - function attachEventListeners() { | ||
| 620 | - | ||
| 621 | - const svgContainer = document.getElementById('svgContainer'); | ||
| 622 | - document.querySelectorAll('.link').forEach(link => { | ||
| 623 | - link.addEventListener('contextmenu', function(e) { | ||
| 624 | - e.preventDefault(); // 阻止默认的右键菜单 | ||
| 625 | - const linkId = e.target.getAttribute('data-link-id'); // 确保你在绘制线条时添加了 data-link-id 属性 | ||
| 626 | - showContextMenu(e.clientX, e.clientY, linkId); | ||
| 627 | - }); | ||
| 628 | - }); | ||
| 629 | - document.getElementById('svgContainer').addEventListener('click', function(e) { | ||
| 630 | - if (e.target.classList.contains('delete-icon')) { | ||
| 631 | - // 获取点击的删除图标对应的线的索引 | ||
| 632 | - const linkIndex = e.target.getAttribute('data-link-level'); | ||
| 633 | - // 从数组中移除该线 | ||
| 634 | - links.splice(linkIndex, 1); | ||
| 635 | - // 重新绘制剩余的线和删除图标 | ||
| 636 | - drawLinks(); | ||
| 637 | - drawCards(); // 如果你的线条与卡片有关联,可能需要重新绘制卡片以更新视图 | ||
| 638 | - } else if (e.target.classList.contains('card-delete-icon')) { | ||
| 639 | - // 获取点击的删除图标对应的卡片ID | ||
| 640 | - const cardId = e.target.getAttribute('data-card-id'); | ||
| 641 | - // 从`cards`数组中移除对应的卡片 | ||
| 642 | - cards = cards.filter(card => card.id !== cardId); | ||
| 643 | - // 同时移除所有与该卡片连接的线 | ||
| 644 | - links = links.filter(link => !(link.source.node.startsWith(cardId) || (link.target && link.target | ||
| 645 | - .node.startsWith(cardId)))); | ||
| 646 | - // 重新绘制卡片和线 | ||
| 647 | - drawLinks(); | ||
| 648 | - drawCards(); | ||
| 649 | - } else { | ||
| 650 | - let targetCardContainer = e.target.closest('.card-container'); | ||
| 651 | - if (targetCardContainer) { | ||
| 652 | - const cardId = targetCardContainer.getAttribute('data-id'); | ||
| 653 | - // 将SVG元素移动到最后,使其在视觉上显示在最前面 | ||
| 654 | - targetCardContainer.parentNode.appendChild(targetCardContainer); | ||
| 655 | - | ||
| 656 | - // 更新cards数组,将点击的卡片移动到数组的末尾 | ||
| 657 | - const cardIndex = cards.findIndex(card => card.id === cardId); | ||
| 658 | - if (cardIndex > -1) { | ||
| 659 | - const card = cards.splice(cardIndex, 1)[0]; | ||
| 660 | - cards.push(card); | ||
| 661 | - } | ||
| 662 | - | ||
| 663 | - // 这里不需要立即调用drawCards或drawLinks, | ||
| 664 | - // 除非你需要根据cards数组的新顺序进行其他更新 | ||
| 665 | - } | ||
| 666 | - } | ||
| 667 | - }); | ||
| 668 | - | ||
| 669 | - svgContainer.addEventListener('contextmenu', function(e) { | ||
| 670 | - e.preventDefault(); // 阻止右键菜单 | ||
| 671 | - }); | ||
| 672 | - | ||
| 673 | - svgContainer.addEventListener('mousedown', e => { | ||
| 674 | - | ||
| 675 | - // 检查是否是鼠标右键点击 | ||
| 676 | - | ||
| 677 | - const target = e.target; | ||
| 678 | - if (e.button === 2) { | ||
| 679 | - isPanning = true; | ||
| 680 | - startPan.x = e.clientX - currentPan.x; | ||
| 681 | - startPan.y = e.clientY - currentPan.y; | ||
| 682 | - } else if (target | ||
| 683 | - | ||
| 684 | - .classList.contains('card') || target.tagName === 'text') { | ||
| 685 | - const cardContainer = target.closest('.card-container'); | ||
| 686 | - const cardId = cardContainer.getAttribute('data-id'); | ||
| 687 | - startDragCard(e, cardId); | ||
| 688 | - } | ||
| 689 | - }); | ||
| 690 | - document.addEventListener('mousemove', e => { | ||
| 691 | - if (isPanning) { | ||
| 692 | - // 正确计算新的视图窗口位置 | ||
| 693 | - currentPan.x = e.clientX - startPan.x; | ||
| 694 | - currentPan.y = e.clientY - startPan.y; | ||
| 695 | - | ||
| 696 | - // 正确调整SVG的viewBox来实现拖动效果 | ||
| 697 | - // 这里需要更新的是开始拖动的点,而不是当前的点,因此我们反向更新 | ||
| 698 | - svgContainer.setAttribute('viewBox', | ||
| 699 | - `${-currentPan.x} ${-currentPan.y} ${svgContainer.clientWidth} ${svgContainer.clientHeight}` | ||
| 700 | - ); | ||
| 701 | - svgContainer.style.backgroundPosition = `${currentPan.x % 100}px ${currentPan.y % 100}px`; | ||
| 702 | - } else if (isDragging) { | ||
| 703 | - moveCard(e); | ||
| 704 | - } else if (isLinking && currentLink) { | ||
| 705 | - updateLink(e); | ||
| 706 | - } | ||
| 707 | - }); | ||
| 708 | - | ||
| 709 | - document.addEventListener('mouseup', e => { | ||
| 710 | - if (e.button === 2) { | ||
| 711 | - console.log(currentPan); | ||
| 712 | - isPanning = false; | ||
| 713 | - } else if (isDragging) { | ||
| 714 | - endDragCard(); | ||
| 715 | - } else if (isLinking) { | ||
| 716 | - endDragLink(e); | ||
| 717 | - } | ||
| 718 | - }); | ||
| 719 | - } | ||
| 720 | - | ||
| 721 | - function startDragCard(e, cardId) { | ||
| 722 | - isDragging = true; | ||
| 723 | - const card = cards.find(c => c.id === cardId); | ||
| 724 | - currentCard = card; | ||
| 725 | - | ||
| 726 | - const svgRect = svgContainer.getBoundingClientRect(); | ||
| 727 | - dragOffsetX = e.clientX - svgRect.left - card.x; | ||
| 728 | - dragOffsetY = e.clientY - svgRect.top - card.y; | ||
| 729 | - } | ||
| 730 | - | ||
| 731 | - function moveCard(e) { | ||
| 732 | - const svgRect = svgContainer.getBoundingClientRect(); | ||
| 733 | - currentCard.x = e.clientX - svgRect.left - dragOffsetX; | ||
| 734 | - currentCard.y = e.clientY - svgRect.top - dragOffsetY; | ||
| 735 | - | ||
| 736 | - // Update link positions associated with the currentCard | ||
| 737 | - links.forEach(link => { | ||
| 738 | - if (link.source.node.startsWith(currentCard.id)) { | ||
| 739 | - // 根据节点ID更新链接的源位置 | ||
| 740 | - const nodeIndex = parseInt(link.source.node.split('-node')[1]) - 1; | ||
| 741 | - const nodeConfig = currentCard.nodes[nodeIndex]; // 获取当前节点的配置 | ||
| 742 | - const nodeSpacing = 50; // 节点间隔,应与drawCards函数中使用的相同 | ||
| 743 | - const topBottomPadding = 20; // 顶部和底部的边距,应与drawCards函数中使用的相同 | ||
| 744 | - link.source.x = currentCard.x + (nodeConfig.type === "in" ? 0 : 150); // 根据节点类型调整x坐标 | ||
| 745 | - link.source.y = 30 + currentCard.y + topBottomPadding + (nodeConfig.level + 1) * nodeSpacing - ( | ||
| 746 | - nodeSpacing / 2); // 根据节点的index调整y坐标 | ||
| 747 | - } | ||
| 748 | - if (link.target && link.target.node.startsWith(currentCard.id)) { | ||
| 749 | - // 根据节点ID更新链接的目标位置 | ||
| 750 | - const nodeIndex = parseInt(link.target.node.split('-node')[1]) - 1; | ||
| 751 | - const nodeConfig = currentCard.nodes[nodeIndex]; // 获取当前节点的配置 | ||
| 752 | - link.target.x = currentCard.x + (nodeConfig.type === "in" ? 0 : 150); // 根据节点类型调整x坐标 | ||
| 753 | - link.target.y = 30 + currentCard.y + 20 + (nodeConfig.level + 1) * 50 - (50 / | ||
| 754 | - 2); // 根据节点的index调整y坐标 | ||
| 755 | - } | ||
| 756 | - }); | ||
| 757 | - | ||
| 758 | - drawLinks(); // Redraw links to reflect updated positions | ||
| 759 | - drawCards(); // Redraw cards and nodes | ||
| 760 | - } | ||
| 761 | - | ||
| 762 | - | ||
| 763 | - | ||
| 764 | - function endDragCard() { | ||
| 765 | - isDragging = false; | ||
| 766 | - } | ||
| 767 | - | ||
| 768 | - function getNodeCurrentConnections(nodeId) { | ||
| 769 | - let count = 0; | ||
| 770 | - links.forEach(link => { | ||
| 771 | - if (link.source.node === nodeId || (link.target && link.target.node === nodeId)) { | ||
| 772 | - count++; | ||
| 773 | - } | ||
| 774 | - }); | ||
| 775 | - return count; | ||
| 776 | - } | ||
| 777 | - | ||
| 778 | - function startDragLink(e) { | ||
| 779 | - e.stopPropagation(); // Prevent card drag | ||
| 780 | - | ||
| 781 | - const nodeId = e.target.getAttribute('data-node-id'); | ||
| 782 | - const cardId = e.target.getAttribute('data-card-id'); | ||
| 783 | - const card = cards.find(c => c.id === cardId); | ||
| 784 | - const nodeElement = e.target; | ||
| 785 | - const node = card.nodes.find(n => `${card.id}-node${card.nodes.indexOf(n) + 1}` === nodeId); | ||
| 786 | - | ||
| 787 | - | ||
| 788 | - // 检查源节点是否允许发起新的连接 | ||
| 789 | - const currentConnections = getNodeCurrentConnections(nodeId); | ||
| 790 | - if (node.multiConnected !== -1 && currentConnections >= node.multiConnected) { | ||
| 791 | - console.log('此节点不允许更多的连接。'); | ||
| 792 | - return; // 不允许创建新的连接 | ||
| 793 | - } | ||
| 794 | - isLinking = true; | ||
| 795 | - | ||
| 796 | - const svgRect = svgContainer.getBoundingClientRect(); | ||
| 797 | - const nodeX = e.clientX - svgRect.left; | ||
| 798 | - const nodeY = e.clientY - svgRect.top; | ||
| 799 | - | ||
| 800 | - currentLink = { | ||
| 801 | - source: { | ||
| 802 | - node: nodeId, | ||
| 803 | - x: nodeX, | ||
| 804 | - y: nodeY, | ||
| 805 | - color: nodeElement.getAttribute('fill'), | ||
| 806 | - type: node.type, | ||
| 807 | - enumType: node.enumType | ||
| 808 | - }, | ||
| 809 | - target: null | ||
| 810 | - }; | ||
| 811 | - } | ||
| 812 | - | ||
| 813 | - function updateLink(e) { | ||
| 814 | - const svgRect = svgContainer.getBoundingClientRect(); | ||
| 815 | - currentLink.target = { | ||
| 816 | - x: e.clientX - svgRect.left, | ||
| 817 | - y: e.clientY - svgRect.top | ||
| 818 | - }; | ||
| 819 | - drawCurrentLink(); | ||
| 820 | - } | ||
| 821 | - | ||
| 822 | - function endDragLink(e) { | ||
| 823 | - isLinking = false; | ||
| 824 | - const svgRect = svgContainer.getBoundingClientRect(); | ||
| 825 | - const x = e.clientX - svgRect.left; | ||
| 826 | - const y = e.clientY - svgRect.top; | ||
| 827 | - | ||
| 828 | - // 默认情况下,假设目标节点就是e.target | ||
| 829 | - let targetNode = e.target; | ||
| 830 | - | ||
| 831 | - // 检查e.target是否是我们期望的节点类型,如果不是,则尝试使用document.elementFromPoint | ||
| 832 | - if (!targetNode.classList.contains('node')) { | ||
| 833 | - e.target.style.display = 'none'; | ||
| 834 | - targetNode = document.elementFromPoint(e.clientX, e.clientY); | ||
| 835 | - e.target.style.display = ''; | ||
| 836 | - } | ||
| 837 | - | ||
| 838 | - let validTargetFound = false; | ||
| 839 | - | ||
| 840 | - // 进行节点的有效性判断 | ||
| 841 | - if (targetNode && targetNode.classList.contains('node')) { | ||
| 842 | - const sourceNodeId = currentLink.source.node; | ||
| 843 | - const targetNodeId = targetNode.getAttribute('data-node-id'); | ||
| 844 | - | ||
| 845 | - // 从节点ID分解出卡片ID和节点索引 | ||
| 846 | - const sourceNodeParts = sourceNodeId.split('-node'); | ||
| 847 | - const targetNodeParts = targetNodeId.split('-node'); | ||
| 848 | - const sourceCard = cards.find(card => card.id === sourceNodeParts[0]); | ||
| 849 | - const targetCard = cards.find(card => card.id === targetNodeParts[0]); | ||
| 850 | - | ||
| 851 | - // 根据节点ID找到对应的节点对象 | ||
| 852 | - const sourceNodeIndex = parseInt(sourceNodeParts[1]) - 1; | ||
| 853 | - const targetNodeIndex = parseInt(targetNodeParts[1]) - 1; | ||
| 854 | - const sourceNode = sourceCard.nodes[sourceNodeIndex]; | ||
| 855 | - const targetNodeObj = targetCard.nodes[targetNodeIndex]; | ||
| 856 | - | ||
| 857 | - // 检查目标节点是否允许接受新的连接 | ||
| 858 | - const targetCurrentConnections = getNodeCurrentConnections(targetNodeId); | ||
| 859 | - if (targetNodeObj.multiConnected !== -1 && targetCurrentConnections >= targetNodeObj.multiConnected) { | ||
| 860 | - console.log('目标节点不允许更多的连接。'); | ||
| 861 | - // 移除临时绘制的连接线 | ||
| 862 | - const tempLink = document.querySelector('.temp-link'); | ||
| 863 | - if (tempLink) { | ||
| 864 | - tempLink.remove(); | ||
| 865 | - } | ||
| 866 | - currentLink = null; | ||
| 867 | - drawLinks(); | ||
| 868 | - return; | ||
| 869 | - } | ||
| 870 | - // 确保目标节点不是起始节点自身,避免自连接 | ||
| 871 | - if (currentLink.source.node !== targetNodeId && sourceNode.enumType === targetNodeObj.enumType) { | ||
| 872 | - validTargetFound = true; | ||
| 873 | - currentLink.source.enumType = sourceNode.enumType; | ||
| 874 | - currentLink.source.x = currentLink.source.x - currentPan.x; | ||
| 875 | - currentLink.source.y = currentLink.source.y - currentPan.y; | ||
| 876 | - // 更新连接的目标信息,并保存该连接 | ||
| 877 | - links.push({ | ||
| 878 | - ...currentLink, | ||
| 879 | - target: { | ||
| 880 | - node: targetNodeId, | ||
| 881 | - x: x - currentPan.x, | ||
| 882 | - y: y - currentPan.y, | ||
| 883 | - color: sourceNode.color, | ||
| 884 | - enumType: sourceNode.enumType | ||
| 885 | - } | ||
| 886 | - }); | ||
| 887 | - } | ||
| 888 | - } else { | ||
| 889 | - const sourceNodeId = currentLink.source.node; | ||
| 890 | - const sourceNodeParts = sourceNodeId.split('-node'); | ||
| 891 | - const sourceCard = cards.find(card => card.id === sourceNodeParts[0]); | ||
| 892 | - const sourceNodeIndex = parseInt(sourceNodeParts[1]) - 1; | ||
| 893 | - const sourceNode = sourceCard.nodes[sourceNodeIndex]; | ||
| 894 | - currentLink.source.enumType = sourceNode.enumType; | ||
| 895 | - showCardCreationModal(e.clientX, e.clientY, currentLink.source); | ||
| 896 | - | ||
| 897 | - } | ||
| 898 | - | ||
| 899 | - const tempLink = document.querySelector('.temp-link'); | ||
| 900 | - if (tempLink) { | ||
| 901 | - tempLink.remove(); | ||
| 902 | - } | ||
| 903 | - currentLink = null; | ||
| 904 | - drawLinks(); | ||
| 905 | - } | ||
| 906 | - | ||
| 907 | - | ||
| 908 | - | ||
| 909 | - | ||
| 910 | - | ||
| 911 | - | ||
| 912 | - // 更新drawCurrentLink函数,增加线宽 | ||
| 913 | - // 更新drawCurrentLink函数,增加线宽 | ||
| 914 | - function drawCurrentLink() { | ||
| 915 | - const tempLink = document.querySelector('.temp-link'); | ||
| 916 | - if (tempLink) tempLink.remove(); | ||
| 917 | - | ||
| 918 | - if (!currentLink || !currentLink.target) return; | ||
| 919 | - | ||
| 920 | - const svgContainer = document.getElementById('svgContainer'); | ||
| 921 | - const path = document.createElementNS('http://www.w3.org/2000/svg', 'path'); | ||
| 922 | - path.setAttribute('class', 'temp-link'); | ||
| 923 | - // 设置等宽线属性 | ||
| 924 | - path.setAttribute('stroke', currentLink.source.color); | ||
| 925 | - path.setAttribute('stroke-width', 5); | ||
| 926 | - path.setAttribute('fill', 'none'); | ||
| 927 | - | ||
| 928 | - // 计算考虑了平移偏移的起点和终点 | ||
| 929 | - const adjustedSourceX = currentLink.source.x - currentPan.x; | ||
| 930 | - const adjustedSourceY = currentLink.source.y - currentPan.y; | ||
| 931 | - const adjustedTargetX = currentLink.target.x - currentPan.x; | ||
| 932 | - const adjustedTargetY = currentLink.target.y - currentPan.y; | ||
| 933 | - | ||
| 934 | - // 更新路径以使用调整后的坐标 | ||
| 935 | - if (currentLink.source.type === 'out') { | ||
| 936 | - const d = | ||
| 937 | - `M${adjustedSourceX},${adjustedSourceY} C${adjustedSourceX + 100},${adjustedSourceY} ${adjustedTargetX - 100},${adjustedTargetY} ${adjustedTargetX},${adjustedTargetY}`; | ||
| 938 | - path.setAttribute('d', d); | ||
| 939 | - } else { | ||
| 940 | - const d = | ||
| 941 | - `M${adjustedSourceX},${adjustedSourceY} C${adjustedSourceX - 100},${adjustedSourceY} ${adjustedTargetX + 100},${adjustedTargetY} ${adjustedTargetX},${adjustedTargetY}`; | ||
| 942 | - path.setAttribute('d', d); | ||
| 943 | - } | ||
| 944 | - | ||
| 945 | - svgContainer.appendChild(path); | ||
| 946 | - } | ||
| 947 | - | ||
| 948 | - function attachNodeEventListeners() { | ||
| 949 | - document.querySelectorAll('.node').forEach(node => { | ||
| 950 | - node.addEventListener('mousedown', startDragLink); | ||
| 951 | - }); | ||
| 952 | - } | ||
| 953 | - | ||
| 954 | - function populateCardTypeList(mouseX, mouseY, sourceNode) { | ||
| 955 | - const listElement = document.getElementById('card-type-list'); | ||
| 956 | - listElement.innerHTML = ''; // 清空现有列表项 | ||
| 957 | - const addedTypes = new Set(); | ||
| 958 | - | ||
| 959 | - cards.forEach(card => { | ||
| 960 | - if (!addedTypes.has(card.type)) { | ||
| 961 | - const listItem = document.createElement('li'); | ||
| 962 | - listItem.tabIndex = 0; // 使元素能够获得焦点,以便能够监听键盘事件 | ||
| 963 | - listItem.textContent = card.label; // 使用卡片的标签或类型 | ||
| 964 | - listItem.onclick = function() { | ||
| 965 | - createNewCard(card, mouseX, mouseY, sourceNode); | ||
| 966 | - hideCardCreationModal(); // 新建卡片后隐藏模态框 | ||
| 967 | - }; | ||
| 968 | - listItem.onkeydown = function(event) { | ||
| 969 | - if (event.key === 'Enter') { | ||
| 970 | - createNewCard(card, mouseX, mouseY, sourceNode); | ||
| 971 | - hideCardCreationModal(); // 新建卡片后隐藏模态框 | ||
| 972 | - } | ||
| 973 | - }; | ||
| 974 | - listElement.appendChild(listItem); | ||
| 975 | - addedTypes.add(card.type); | ||
| 976 | - } | ||
| 977 | - }); | ||
| 978 | - } | ||
| 979 | - | ||
| 980 | - | ||
| 981 | - function showCardCreationModal(mouseX, mouseY, sourceNode) { | ||
| 982 | - populateCardTypeList(mouseX, mouseY, sourceNode); // 填充卡片类型列表 | ||
| 983 | - const modal = document.getElementById('card-creation-modal'); | ||
| 984 | - // 在这里添加取消按钮 | ||
| 985 | - if (!document.getElementById('cancel-btn')) { | ||
| 986 | - const cancelButton = document.createElement('button'); | ||
| 987 | - cancelButton.id = 'cancel-btn'; | ||
| 988 | - cancelButton.textContent = '取消'; | ||
| 989 | - cancelButton.onclick = function() { | ||
| 990 | - hideCardCreationModal(); | ||
| 991 | - }; | ||
| 992 | - modal.appendChild(cancelButton); | ||
| 993 | - } | ||
| 994 | - | ||
| 995 | - | ||
| 996 | - | ||
| 997 | - // 设置弹出框的位置 | ||
| 998 | - modal.style.left = mouseX + 'px'; | ||
| 999 | - modal.style.top = mouseY + 'px'; | ||
| 1000 | - modal.style.display = 'block'; // 显示弹窗 | ||
| 1001 | - } | ||
| 1002 | - | ||
| 1003 | - function createNewCard(cardTemplate, mouseX, mouseY, sourceNode) { | ||
| 1004 | - const newCard = { | ||
| 1005 | - ...cardTemplate, | ||
| 1006 | - nodes: JSON.parse(JSON.stringify(cardTemplate.nodes)), // 深拷贝nodes属性 | ||
| 1007 | - id: 'card' + (cards.length + 1) | ||
| 1008 | - }; | ||
| 1009 | - // 将每个node的value设置为空字符串 | ||
| 1010 | - newCard.nodes.forEach(node => { | ||
| 1011 | - node.value = ''; | ||
| 1012 | - }); | ||
| 1013 | - newCard.x = mouseX - 75 - currentPan.x; // 调整为鼠标中心 | ||
| 1014 | - newCard.y = mouseY - 15 - currentPan.y; // 调整为鼠标中心 | ||
| 1015 | - cards.push(newCard); // 将新创建的卡片添加到卡片列表中 | ||
| 1016 | - | ||
| 1017 | - // 如果提供了sourceNode,找到新卡片的合适target node并创建连接 | ||
| 1018 | - if (sourceNode) { | ||
| 1019 | - sourceNode.x -= currentPan.x; | ||
| 1020 | - sourceNode.y -= currentPan.y; | ||
| 1021 | - let targetNode = newCard.nodes.find(node => node.enumType === sourceNode.enumType && node.type === 'in'); | ||
| 1022 | - if (targetNode) { | ||
| 1023 | - links.push({ | ||
| 1024 | - source: sourceNode, | ||
| 1025 | - target: { | ||
| 1026 | - node: `${newCard.id}-node${newCard.nodes.indexOf(targetNode) + 1}`, | ||
| 1027 | - x: newCard.x + (targetNode.type === 'in' ? 0 : 150), | ||
| 1028 | - y: newCard.y + 30 + 20 + (targetNode.level + 1) * 50 - 25, | ||
| 1029 | - color: targetNode.color, | ||
| 1030 | - enumType: targetNode.enumType | ||
| 1031 | - } | ||
| 1032 | - }); | ||
| 1033 | - } | ||
| 1034 | - } | ||
| 1035 | - | ||
| 1036 | - | ||
| 1037 | - drawLinks(); | ||
| 1038 | - drawCards(); | ||
| 1039 | - } | ||
| 1040 | - | ||
| 1041 | - | ||
| 1042 | - | ||
| 1043 | - function hideCardCreationModal() { | ||
| 1044 | - const modal = document.getElementById('card-creation-modal'); | ||
| 1045 | - modal.style.display = 'none'; // 隐藏弹窗 | ||
| 1046 | - } | ||
| 1047 | - | ||
| 1048 | - init(); | ||
| 1049 | - </script> | ||
| 1050 | - </body> | ||
| 1051 | - | ||
| 1052 | -</html>--> |