diff --git a/core/config/main.php b/core/config/main.php index be7c0cf..2c1e8cb 100755 --- a/core/config/main.php +++ b/core/config/main.php @@ -93,5 +93,5 @@ $g_config['vote'] = "./tmp/vote/vote.txt"; $g_config['voteTopics'] = "./tmp/vote/voteTopics.txt_"; $g_config['use_js_cache'] = true; - $g_config['engine_version'] = 80; + $g_config['engine_version'] = 81; ?> diff --git a/script/features/algorithms/model/plugins/FindShortPatchsFromOne.js b/script/features/algorithms/model/plugins/FindShortPatchsFromOne.js index e8cc316..97136b9 100644 --- a/script/features/algorithms/model/plugins/FindShortPatchsFromOne.js +++ b/script/features/algorithms/model/plugins/FindShortPatchsFromOne.js @@ -211,7 +211,7 @@ FindShortPatchsFromOne.prototype.IsSupportMultiGraph = function() FindShortPatchsFromOne.prototype.IsSupportNegativeWeight = function() { - return false; + return true; } // Factory for connected components. diff --git a/script/features/algorithms/model/plugins/ShortestPath.js b/script/features/algorithms/model/plugins/ShortestPath.js index 83fd97d..00dd8ce 100644 --- a/script/features/algorithms/model/plugins/ShortestPath.js +++ b/script/features/algorithms/model/plugins/ShortestPath.js @@ -46,16 +46,28 @@ FindShortPathNew.prototype.result = function(resultCallback) { if (this.firstObject && this.secondObject) { - this.outResultCallback = function (result ) { resultCallback(result); }; - self = this; - this.CalculateAlgorithm("dsp", - [ - {name: "start", value: this.firstObject.id}, - {name: "finish", value: this.secondObject.id} - ], function (pathObjects, properties, results) - { - self.resultCallback(pathObjects, properties, results); - }); + if (!this.graph.hasNegative()) + { + this.outResultCallback = function (result ) { resultCallback(result); }; + self = this; + this.CalculateAlgorithm("dsp", + [ + {name: "start", value: this.firstObject.id}, + {name: "finish", value: this.secondObject.id} + ], function (pathObjects, properties, results) + { + self.resultCallback(pathObjects, properties, results); + }); + } else { + this.outResultCallback = function (result ) { resultCallback(result); }; + self = this; + this.CalculateAlgorithm("blf", [ + {name: "start", value : this.firstObject.id} + ], function (pathObjects, properties, results) + { + self.resultCallbackBellmanFord(pathObjects, properties, results); + }); + } } return null; } @@ -106,6 +118,104 @@ FindShortPathNew.prototype.resultCallback = function(pathObjects, properties, re this.outResultCallback(outputResult); } +FindShortPathNew.prototype.resultCallbackBellmanFord = function(pathObjects, properties, results) +{ + var outputResult = {}; + outputResult["version"] = 1; + outputResult["minPath"] = true; + + this.pathObjects = pathObjects; + this.properties = properties; + + var bFound = results.length > 0 && results[0].value < this.infinityValue && (results[0].type == 1 || results[0].type == 2); + + if (bFound) + { + this.selectedObjects = {}; + + let prevNodeId = -1; + + let currentDistance = 0; + let currentSelectedObjects = []; + let currentSelectedNodes = []; + + let dataForTargetVertex = {}; + + let pushVertex = function (currentDistance, currentSelectedObjects, currentSelectedNodes) { + let targetVertexId = currentSelectedObjects[currentSelectedObjects.length - 1]; + dataForTargetVertex[targetVertexId] = {distance: currentDistance, objects: currentSelectedObjects, nodes: currentSelectedNodes}; + } + + for (var i = 0; i < results.length; i++) + { + if (results[i].type == 6) + { + pushVertex(currentDistance, currentSelectedObjects, currentSelectedNodes); + currentDistance = 0; + prevNodeId = -1; + currentSelectedObjects = []; + currentSelectedNodes = []; + } + + if (results[i].type == 4) + { + var nodeId = parseInt(results[i].value); + var vertex = this.graph.FindVertex(nodeId); + if (prevNodeId >= 0) + { + var edgeObject = this.graph.FindEdgeMin(prevNodeId, nodeId); + currentSelectedObjects.push(edgeObject.id); + currentDistance += edgeObject.GetWeight(); + } + prevNodeId = nodeId; + currentSelectedObjects.push(nodeId); + currentSelectedNodes.push(nodeId); + } + } + + pushVertex(currentDistance, currentSelectedObjects, currentSelectedNodes); + + let pathObjectsToTarget = dataForTargetVertex[this.secondObject.id].objects; + let distanceToTarget = dataForTargetVertex[this.secondObject.id].distance; + let pathNodes = dataForTargetVertex[this.secondObject.id].nodes; + + for (var i = 0; i < pathObjectsToTarget.length; i++) + { + this.selectedObjects[pathObjectsToTarget[i]] = 1; + } + + this.message = g_shortestPathResult.replace("%d", (distanceToTarget * 1).toString()); + + outputResult["paths"] = []; + outputResult["paths"].push(pathNodes); + + this.message = this.message + ": "; + for (var i = 0; i < pathNodes.length; i++) + { + this.message = this.message + this.graph.FindVertex(pathNodes[i]).mainText + ((i < pathNodes.length - 1) ? "⇒" : ""); + } + + for (let targetId in dataForTargetVertex) + { + this.properties[targetId] = {}; + this.properties[targetId]['lowestDistance'] = dataForTargetVertex[targetId].distance; + } + + this.message = this.message + " "; + + this.updateUpText(); + } + else + { + this.message = g_pathNotExists; + } + this.secondObject = null; + this.firstObject = null; + + this.outResultCallback(outputResult); +} + + FindShortPathNew.prototype.selectVertex = function(vertex) { this.pathObjects = null; @@ -223,7 +333,7 @@ FindShortPathNew.prototype.IsSupportMultiGraph = function () FindShortPathNew.prototype.IsSupportNegativeWeight = function() { - return false; + return true; } diff --git a/script/features/graphoffline/Graphoffline.Emscripten.wasm b/script/features/graphoffline/Graphoffline.Emscripten.wasm index 12d16e6..fc6bf70 100644 Binary files a/script/features/graphoffline/Graphoffline.Emscripten.wasm and b/script/features/graphoffline/Graphoffline.Emscripten.wasm differ diff --git a/script/pages/create_graph_by_edge_list/api/index.js.cache b/script/pages/create_graph_by_edge_list/api/index.js.cache index 5bccdc0..91330c9 100644 --- a/script/pages/create_graph_by_edge_list/api/index.js.cache +++ b/script/pages/create_graph_by_edge_list/api/index.js.cache @@ -1,4 +1,4 @@ -moduleLoader.beginCacheLoading(["/script/entities/graph/api/index.js?v=75","/script/shared/point.js?v=75","/script/entities/edge/api/index.js?v=75","/script/entities/edge/model/BaseEdge.js?v=75","/script/entities/edge/model/EdgeModel.js?v=75","/script/entities/vertex/api/index.js?v=75","/script/entities/vertex/model/BaseVertex.js?v=75","/script/entities/vertex/model/VertexModel.js?v=75","/script/entities/graph/model/Graph.js?v=75",]);{let modulDir="pages/create_graph_by_edge_list/";doInclude([include("entities/graph/api/index.js")]);} +moduleLoader.beginCacheLoading(["/script/entities/graph/api/index.js?v=77","/script/shared/point.js?v=77","/script/entities/edge/api/index.js?v=77","/script/entities/edge/model/BaseEdge.js?v=77","/script/entities/edge/model/EdgeModel.js?v=77","/script/entities/vertex/api/index.js?v=77","/script/entities/vertex/model/BaseVertex.js?v=77","/script/entities/vertex/model/VertexModel.js?v=77","/script/entities/graph/model/Graph.js?v=77",]);{let modulDir="pages/create_graph_by_edge_list/";doInclude([include("entities/graph/api/index.js")]);} {let modulDir="entities/graph/";doInclude([include("shared/point.js"),include("entities/edge/api/index.js"),include("entities/vertex/api/index.js"),include("model/Graph.js",modulDir)])}function Point(x,y){this.x=x||0;this.y=y||0;};Point.prototype.x=null;Point.prototype.y=null;Point.prototype.add=function(v){return new Point(this.x+v.x,this.y+v.y);};Point.prototype.addValue=function(v){return new Point(this.x+v,this.y+v);};Point.prototype.clone=function(){return new Point(this.x,this.y);};Point.prototype.degreesTo=function(v){var dx=this.x-v.x;var dy=this.y-v.y;var angle=Math.atan2(dy,dx);return angle*(180/Math.PI);};Point.prototype.distance=function(v){return Math.sqrt(this.distanceSqr(v));};Point.prototype.distanceSqr=function(v){var x=this.x-v.x;var y=this.y-v.y;return x*x+y*y;};Point.prototype.equals=function(toCompare){return this.x==toCompare.x&&this.y==toCompare.y;};Point.prototype.interpolate=function(v,f){return new Point((this.x+v.x)*f,(this.y+v.y)*f);};Point.prototype.length=function(){return Math.sqrt(this.x*this.x+this.y*this.y);};Point.prototype.normalize=function(thickness){var l=this.length();this.x=this.x/l*thickness;this.y=this.y/l*thickness;return new Point(this.x,this.y);};Point.prototype.normalizeCopy=function(thickness){var l=this.length();return new Point(this.x/l*thickness,this.y/l*thickness);};Point.prototype.orbit=function(origin,arcWidth,arcHeight,degrees){var radians=degrees*(Math.PI/180);this.x=origin.x+arcWidth*Math.cos(radians);this.y=origin.y+arcHeight*Math.sin(radians);};Point.prototype.rotate=function(center,degrees){var radians=degrees*(Math.PI/180);offset=this.subtract(center);this.x=offset.x*Math.cos(radians)-offset.y*Math.sin(radians);this.y=offset.x*Math.sin(radians)+offset.y*Math.cos(radians);this.x=this.x+center.x;this.y=this.y+center.y;return this;};Point.prototype.offset=function(dx,dy){this.x+=dx;this.y+=dy;};Point.prototype.subtract=function(v){return new Point(this.x-v.x,this.y-v.y);};Point.prototype.subtractValue=function(value){return new Point(this.x-value,this.y-value);};Point.prototype.multiply=function(value){return new Point(this.x*value,this.y*value);};Point.prototype.toString=function(){return"(x="+this.x+", y="+this.y+")";};Point.prototype.normal=function(){return new Point(-this.y,this.x);};Point.prototype.min=function(point) {return new Point(Math.min(this.x,point.x),Math.min(this.y,point.y));};Point.prototype.max=function(point) {return new Point(Math.max(this.x,point.x),Math.max(this.y,point.y));};Point.prototype.inverse=function() @@ -88,7 +88,7 @@ else BaseEdge.prototype.SetWeight=function(weight) {var useWeight=false;if(!isNaN(parseInt(weight,10))) {useWeight=true;} -weight=(!isNaN(parseInt(weight,10))&&weight>=0)?weight:1;this.weight=Number(weight);this.useWeight=useWeight;} +weight=(!isNaN(parseInt(weight,10)))?weight:1;this.weight=Number(weight);this.useWeight=useWeight;} BaseEdge.prototype.SetUpText=function(text) {this.upText=text;} BaseEdge.prototype.resetOwnStyle=function(index) @@ -216,11 +216,11 @@ BaseVertex.prototype.hasOwnStyleFor=function(index) const defaultVertexDiameter=30;function VertexModel() {this.diameter=globalApplication.GetDefaultVertexSize();} function Graph() -{this.vertices=[];this.edges=[];this.uidGraph=0;this.uidEdge=10000;this.hasDirect=false;this.isMultiGraph=false;};Graph.prototype.infinity=1E8;Graph.prototype.maxVertices=1000;Graph.prototype.edgesOffset=10000;Graph.prototype.AddNewVertex=function(vertex) +{this.vertices=[];this.edges=[];this.uidGraph=0;this.uidEdge=10000;this.hasDirect=false;this.isMultiGraph=false;this.hasNegativeWeight=false;};Graph.prototype.infinity=1E8;Graph.prototype.maxVertices=1000;Graph.prototype.edgesOffset=10000;Graph.prototype.AddNewVertex=function(vertex) {if(this.vertices.length<=this.maxVertices) {vertex.SetId(this.uidGraph);this.uidGraph=this.uidGraph+1;this.vertices.push(vertex);} return this.vertices.length-1;} -Graph.prototype.ClearGraph=function(){this.vertices=[];this.edges=[];this.uidGraph=0;this.uidEdge=10000;this.hasDirect=false;this.isMultiGraph=false;} +Graph.prototype.ClearGraph=function(){this.vertices=[];this.edges=[];this.uidGraph=0;this.uidEdge=10000;this.hasDirect=false;this.isMultiGraph=false;this.hasNegativeWeight=false;} Graph.prototype.AddNewEdgeSafe=function(graph1,graph2,isDirect,weight,replaceIfExists=true) {return this.AddNewEdge(new BaseEdge(graph1,graph2,isDirect,weight),replaceIfExists);} Graph.prototype.AddNewEdge=function(edge,replaceIfExists) @@ -232,11 +232,11 @@ else {if(edge1!=null&&replaceIfExists) this.DeleteEdge(edge1);if(edgeRevert!=null&&!edgeRevert.isDirect&&replaceIfExists) this.DeleteEdge(edgeRevert);this.edges.push(edge);} -this.isMultiGraph=this.checkMutiGraph();return this.edges.length-1;} +this.isMultiGraph=this.checkMutiGraph();this.hasNegativeWeight=this.checkNegativeWeight();return this.edges.length-1;} Graph.prototype.DeleteEdge=function(edgeObject) {var index=this.edges.indexOf(edgeObject);if(index>-1) {this.edges.splice(index,1);} -this.isMultiGraph=this.checkMutiGraph();} +this.isMultiGraph=this.checkMutiGraph();this.hasNegativeWeight=this.checkNegativeWeight();} Graph.prototype.DeleteVertex=function(vertexObject) {var index=this.vertices.indexOf(vertexObject);if(index>-1) {for(var i=0;imaxWeight) {res=edge;maxWeight=edge.weight;}}} @@ -392,7 +392,7 @@ var newVertices=[];var bWeightGraph=false;for(var i=0;i=this.vertices.length) {var newPos=this.GetRandomPositionOfVertex(matrix,j,viewportSize);newVertices.push(new BaseVertex(newPos.x,newPos.y,currentEnumVerticesType));this.AddNewVertex(newVertices[newVertices.length-1]);} -if(cols[i][j]>0) +if(cols[i][j]!=0) {var nEdgeIndex=this.AddNewEdgeSafe(this.vertices[i],this.vertices[j],cols[i][j]!=cols[j][i],cols[i][j],true);this.FixEdgeCurve(nEdgeIndex);if(nEdgeIndex>=0) {bWeightGraph=bWeightGraph||this.edges[nEdgeIndex].weight!=1;}}}} if(!bWeightGraph) @@ -402,7 +402,7 @@ for(var i=rows.length;i(.+)$/g,/^(.+)<(.+)$/g,/^(.+)-\((\d+|\d+\.?\d+)\)-(.+)$/g,/^(.+)-\((\d+|\d+\.?\d+)\)\>(.+)$/g,/^(.+)<\((\d+|\d+\.?\d+)\)\-(.+)$/g,];let bWeightGraph=false;var newVertices=[];for(var i=0;i(.+)$/g,/^(.+)<(.+)$/g,/^(.+)-\((-?\d+|-?\d+\.?\d+)\)-(.+)$/g,/^(.+)-\((-?\d+|-?\d+\.?\d+)\)\>(.+)$/g,/^(.+)<\((-?\d+|-?\d+\.?\d+)\)\-(.+)$/g,];let bWeightGraph=false;var newVertices=[];for(var i=0;i=0;--j){if(!line.match(regExp[j])){continue;} let groupes=Array.from(line.matchAll(regExp[j]));let groupe=groupes[0];let vetext1Title=groupe[1];let vertex1=this.FindVertexByTitle(vetext1Title);if(vertex1==null){let newPosition=this.GetRandomPosition(viewportSize);vertex1=this.vertices[this.AddNewVertex(new BaseVertex(newPosition.x,newPosition.y,currentEnumVerticesType))];vertex1.mainText=vetext1Title;newVertices.push(vertex1);} @@ -509,7 +509,7 @@ Graph.prototype.LoadFromXML=function(xmlText,additionalData) this.uidGraph=loadedGraphId;this.uidEdge=loadedEdgeId;$nodes=$xml.find("node");var vertices=[];$nodes.each(function(){var vertex=new BaseVertex();vertex.LoadFromXML($(this));vertices.push(vertex);});this.vertices=vertices;$edges=$xml.find("edge");var edges=[];var graph=this;$edges.each(function(){var edge=new BaseEdge();edge.LoadFromXML($(this),graph);if(edge.id=0)?weight:1;this.weight=Number(weight);this.useWeight=useWeight;} +weight=(!isNaN(parseInt(weight,10)))?weight:1;this.weight=Number(weight);this.useWeight=useWeight;} BaseEdge.prototype.SetUpText=function(text) {this.upText=text;} BaseEdge.prototype.resetOwnStyle=function(index) @@ -216,11 +216,11 @@ BaseVertex.prototype.hasOwnStyleFor=function(index) const defaultVertexDiameter=30;function VertexModel() {this.diameter=globalApplication.GetDefaultVertexSize();} function Graph() -{this.vertices=[];this.edges=[];this.uidGraph=0;this.uidEdge=10000;this.hasDirect=false;this.isMultiGraph=false;};Graph.prototype.infinity=1E8;Graph.prototype.maxVertices=1000;Graph.prototype.edgesOffset=10000;Graph.prototype.AddNewVertex=function(vertex) +{this.vertices=[];this.edges=[];this.uidGraph=0;this.uidEdge=10000;this.hasDirect=false;this.isMultiGraph=false;this.hasNegativeWeight=false;};Graph.prototype.infinity=1E8;Graph.prototype.maxVertices=1000;Graph.prototype.edgesOffset=10000;Graph.prototype.AddNewVertex=function(vertex) {if(this.vertices.length<=this.maxVertices) {vertex.SetId(this.uidGraph);this.uidGraph=this.uidGraph+1;this.vertices.push(vertex);} return this.vertices.length-1;} -Graph.prototype.ClearGraph=function(){this.vertices=[];this.edges=[];this.uidGraph=0;this.uidEdge=10000;this.hasDirect=false;this.isMultiGraph=false;} +Graph.prototype.ClearGraph=function(){this.vertices=[];this.edges=[];this.uidGraph=0;this.uidEdge=10000;this.hasDirect=false;this.isMultiGraph=false;this.hasNegativeWeight=false;} Graph.prototype.AddNewEdgeSafe=function(graph1,graph2,isDirect,weight,replaceIfExists=true) {return this.AddNewEdge(new BaseEdge(graph1,graph2,isDirect,weight),replaceIfExists);} Graph.prototype.AddNewEdge=function(edge,replaceIfExists) @@ -232,11 +232,11 @@ else {if(edge1!=null&&replaceIfExists) this.DeleteEdge(edge1);if(edgeRevert!=null&&!edgeRevert.isDirect&&replaceIfExists) this.DeleteEdge(edgeRevert);this.edges.push(edge);} -this.isMultiGraph=this.checkMutiGraph();return this.edges.length-1;} +this.isMultiGraph=this.checkMutiGraph();this.hasNegativeWeight=this.checkNegativeWeight();return this.edges.length-1;} Graph.prototype.DeleteEdge=function(edgeObject) {var index=this.edges.indexOf(edgeObject);if(index>-1) {this.edges.splice(index,1);} -this.isMultiGraph=this.checkMutiGraph();} +this.isMultiGraph=this.checkMutiGraph();this.hasNegativeWeight=this.checkNegativeWeight();} Graph.prototype.DeleteVertex=function(vertexObject) {var index=this.vertices.indexOf(vertexObject);if(index>-1) {for(var i=0;imaxWeight) {res=edge;maxWeight=edge.weight;}}} @@ -392,7 +392,7 @@ var newVertices=[];var bWeightGraph=false;for(var i=0;i=this.vertices.length) {var newPos=this.GetRandomPositionOfVertex(matrix,j,viewportSize);newVertices.push(new BaseVertex(newPos.x,newPos.y,currentEnumVerticesType));this.AddNewVertex(newVertices[newVertices.length-1]);} -if(cols[i][j]>0) +if(cols[i][j]!=0) {var nEdgeIndex=this.AddNewEdgeSafe(this.vertices[i],this.vertices[j],cols[i][j]!=cols[j][i],cols[i][j],true);this.FixEdgeCurve(nEdgeIndex);if(nEdgeIndex>=0) {bWeightGraph=bWeightGraph||this.edges[nEdgeIndex].weight!=1;}}}} if(!bWeightGraph) @@ -402,7 +402,7 @@ for(var i=rows.length;i(.+)$/g,/^(.+)<(.+)$/g,/^(.+)-\((\d+|\d+\.?\d+)\)-(.+)$/g,/^(.+)-\((\d+|\d+\.?\d+)\)\>(.+)$/g,/^(.+)<\((\d+|\d+\.?\d+)\)\-(.+)$/g,];let bWeightGraph=false;var newVertices=[];for(var i=0;i(.+)$/g,/^(.+)<(.+)$/g,/^(.+)-\((-?\d+|-?\d+\.?\d+)\)-(.+)$/g,/^(.+)-\((-?\d+|-?\d+\.?\d+)\)\>(.+)$/g,/^(.+)<\((-?\d+|-?\d+\.?\d+)\)\-(.+)$/g,];let bWeightGraph=false;var newVertices=[];for(var i=0;i=0;--j){if(!line.match(regExp[j])){continue;} let groupes=Array.from(line.matchAll(regExp[j]));let groupe=groupes[0];let vetext1Title=groupe[1];let vertex1=this.FindVertexByTitle(vetext1Title);if(vertex1==null){let newPosition=this.GetRandomPosition(viewportSize);vertex1=this.vertices[this.AddNewVertex(new BaseVertex(newPosition.x,newPosition.y,currentEnumVerticesType))];vertex1.mainText=vetext1Title;newVertices.push(vertex1);} @@ -509,7 +509,7 @@ Graph.prototype.LoadFromXML=function(xmlText,additionalData) this.uidGraph=loadedGraphId;this.uidEdge=loadedEdgeId;$nodes=$xml.find("node");var vertices=[];$nodes.each(function(){var vertex=new BaseVertex();vertex.LoadFromXML($(this));vertices.push(vertex);});this.vertices=vertices;$edges=$xml.find("edge");var edges=[];var graph=this;$edges.each(function(){var edge=new BaseEdge();edge.LoadFromXML($(this),graph);if(edge.idmaxWeight) {res=edge;maxWeight=edge.weight;}}} diff --git a/script/pages/editor/api/index.js.cache b/script/pages/editor/api/index.js.cache index 43fa614..73dc55a 100644 --- a/script/pages/editor/api/index.js.cache +++ b/script/pages/editor/api/index.js.cache @@ -1,4 +1,4 @@ -moduleLoader.beginCacheLoading(["/script/shared/utils.js?v=76","/script/entities/graph/api/index.js?v=76","/script/shared/point.js?v=76","/script/entities/edge/api/index.js?v=76","/script/entities/edge/model/BaseEdge.js?v=76","/script/entities/edge/model/EdgeModel.js?v=76","/script/entities/vertex/api/index.js?v=76","/script/entities/vertex/model/BaseVertex.js?v=76","/script/entities/vertex/model/VertexModel.js?v=76","/script/entities/graph/model/Graph.js?v=76","/script/features/draw_graph/api/index.js?v=76","/script/features/draw_graph/model/BaseBackgroundDrawer.js?v=76","/script/features/draw_graph/model/BaseEdgeDrawer.js?v=76","/script/features/draw_graph/model/BaseVertexDrawer.js?v=76","/script/features/algorithms/api/index.js?v=76","/script/features/algorithms/model/Algorithms.js?v=76","/script/features/algorithms/model/BaseTraversal.js?v=76","/script/features/base_handler/index.js?v=76","/script/features/default_handler/index.js?v=76","/script/features/add_vertices_handler/index.js?v=76","/script/features/connect_vertices_handler/index.js?v=76","/script/features/delete_objects_handler/index.js?v=76","/script/features/algorithm_handler/index.js?v=76","/script/features/serialization/api/index.js?v=76","/script/features/serialization/model/GraphMLCreator.js?v=76","/script/features/enum_vertices/EnumVertices.js?v=76","/script/pages/editor/model/texts.js?v=76","/script/pages/editor/model/UndoStack.js?v=76","/script/pages/editor/model/DiskSaveLoad.js?v=76","/script/pages/editor/model/Application.js?v=76","/script/pages/editor/ui/ya_metrika.js?v=76","/script/pages/editor/ui/editor.js?v=76","/script/pages/editor/ui/main.js?v=76",]);{function onloadEditor(){console.log("onload() call");doIncludeAsync([include("shared/canvas2svg.js"),include("features/group_rename_handler/index.js"),include("features/saved_graph_handler/index.js"),include("features/saved_graph_image_handler/index.js"),include("features/show_adjacency_matrix/index.js"),include("features/show_distance_matrix/index.js"),include("features/show_incidence_matrix/index.js"),include("features/setup_background_style/index.js"),include("features/setup_edge_style/index.js"),include("features/setup_vertex_style/index.js"),]);postLoadPage();} +moduleLoader.beginCacheLoading(["/script/shared/utils.js?v=77","/script/entities/graph/api/index.js?v=77","/script/shared/point.js?v=77","/script/entities/edge/api/index.js?v=77","/script/entities/edge/model/BaseEdge.js?v=77","/script/entities/edge/model/EdgeModel.js?v=77","/script/entities/vertex/api/index.js?v=77","/script/entities/vertex/model/BaseVertex.js?v=77","/script/entities/vertex/model/VertexModel.js?v=77","/script/entities/graph/model/Graph.js?v=77","/script/features/draw_graph/api/index.js?v=77","/script/features/draw_graph/model/BaseBackgroundDrawer.js?v=77","/script/features/draw_graph/model/BaseEdgeDrawer.js?v=77","/script/features/draw_graph/model/BaseVertexDrawer.js?v=77","/script/features/algorithms/api/index.js?v=77","/script/features/algorithms/model/Algorithms.js?v=77","/script/features/algorithms/model/BaseTraversal.js?v=77","/script/features/base_handler/index.js?v=77","/script/features/default_handler/index.js?v=77","/script/features/add_vertices_handler/index.js?v=77","/script/features/connect_vertices_handler/index.js?v=77","/script/features/delete_objects_handler/index.js?v=77","/script/features/algorithm_handler/index.js?v=77","/script/features/serialization/api/index.js?v=77","/script/features/serialization/model/GraphMLCreator.js?v=77","/script/features/enum_vertices/EnumVertices.js?v=77","/script/pages/editor/model/texts.js?v=77","/script/pages/editor/model/UndoStack.js?v=77","/script/pages/editor/model/DiskSaveLoad.js?v=77","/script/pages/editor/model/Application.js?v=77","/script/pages/editor/ui/ya_metrika.js?v=77","/script/pages/editor/ui/editor.js?v=77","/script/pages/editor/ui/main.js?v=77",]);{function onloadEditor(){console.log("onload() call");doIncludeAsync([include("shared/canvas2svg.js"),include("features/group_rename_handler/index.js"),include("features/saved_graph_handler/index.js"),include("features/saved_graph_image_handler/index.js"),include("features/show_adjacency_matrix/index.js"),include("features/show_distance_matrix/index.js"),include("features/show_incidence_matrix/index.js"),include("features/setup_background_style/index.js"),include("features/setup_edge_style/index.js"),include("features/setup_vertex_style/index.js"),]);postLoadPage();} let modulDir="pages/editor/";doInclude([include("shared/utils.js"),include("entities/graph/api/index.js"),include("features/draw_graph/api/index.js"),include("features/algorithms/api/index.js"),include("features/base_handler/index.js"),include("features/default_handler/index.js"),include("features/add_vertices_handler/index.js"),include("features/connect_vertices_handler/index.js"),include("features/delete_objects_handler/index.js"),include("features/algorithm_handler/index.js"),include("features/serialization/api/index.js"),include("features/enum_vertices/EnumVertices.js"),include("model/texts.js",modulDir),include("model/UndoStack.js",modulDir),include("model/DiskSaveLoad.js",modulDir),include("model/Application.js",modulDir),include("ui/ya_metrika.js",modulDir),include("ui/editor.js",modulDir),include("ui/main.js",modulDir)],onloadEditor);} function gEncodeToHTML(str) {if(typeof str!=='string') diff --git a/script/shared/loader.js b/script/shared/loader.js index 973d7e8..b880114 100644 --- a/script/shared/loader.js +++ b/script/shared/loader.js @@ -1,5 +1,5 @@ // Global version needs to force reload scripts from server. -let globalVersion = 76; +let globalVersion = 77; var include = function(filename, localDir) { return {filename: filename, localDir: localDir};