sync
This commit is contained in:
parent
7380ceee7e
commit
764c77692a
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,4 +1,5 @@
|
|||||||
/node_modules/
|
/node_modules/
|
||||||
/public/build/
|
/public/build/
|
||||||
|
/tmp
|
||||||
|
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
|||||||
77
package-lock.json
generated
77
package-lock.json
generated
@ -10,8 +10,11 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@rollup/plugin-json": "^4.1.0",
|
"@rollup/plugin-json": "^4.1.0",
|
||||||
"axios": "^0.26.1",
|
"axios": "^0.26.1",
|
||||||
|
"fast-xml-parser": "^4.0.7",
|
||||||
"sirv-cli": "^2.0.0",
|
"sirv-cli": "^2.0.0",
|
||||||
"svelte-toasts": "^1.1.2"
|
"svelte-toasts": "^1.1.2",
|
||||||
|
"svg-parser": "^2.0.4",
|
||||||
|
"xml-js": "^1.6.11"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@rollup/plugin-commonjs": "^17.0.0",
|
"@rollup/plugin-commonjs": "^17.0.0",
|
||||||
@ -363,6 +366,21 @@
|
|||||||
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
|
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"node_modules/fast-xml-parser": {
|
||||||
|
"version": "4.0.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.0.7.tgz",
|
||||||
|
"integrity": "sha512-dMtibyus3kC7nbxj1CpVtysLzO13UOAZEFAb5vpQg3T4O6qvetmSePpXKFx5KPNCHKoGwjtgjfF5DOyn7s1ylQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"strnum": "^1.0.5"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"fxparser": "src/cli/cli.js"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "paypal",
|
||||||
|
"url": "https://paypal.me/naturalintelligence"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/fill-range": {
|
"node_modules/fill-range": {
|
||||||
"version": "7.0.1",
|
"version": "7.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
|
||||||
@ -915,6 +933,11 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"node_modules/sax": {
|
||||||
|
"version": "1.2.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
|
||||||
|
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
|
||||||
|
},
|
||||||
"node_modules/semiver": {
|
"node_modules/semiver": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/semiver/-/semiver-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/semiver/-/semiver-1.1.0.tgz",
|
||||||
@ -1000,6 +1023,11 @@
|
|||||||
"integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
|
"integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"node_modules/strnum": {
|
||||||
|
"version": "1.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
|
||||||
|
"integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA=="
|
||||||
|
},
|
||||||
"node_modules/supports-color": {
|
"node_modules/supports-color": {
|
||||||
"version": "5.5.0",
|
"version": "5.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
|
||||||
@ -1038,6 +1066,11 @@
|
|||||||
"resolved": "https://registry.npmjs.org/svelte-toasts/-/svelte-toasts-1.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/svelte-toasts/-/svelte-toasts-1.1.2.tgz",
|
||||||
"integrity": "sha512-m+yL4eEKXyJoyjTYaH1j1GFwF0Pi8YDqnVfwWPDmwi4712iZesv+TNCmToSNlav3R5Vkmc8ZBRkT8DOcu3sywQ=="
|
"integrity": "sha512-m+yL4eEKXyJoyjTYaH1j1GFwF0Pi8YDqnVfwWPDmwi4712iZesv+TNCmToSNlav3R5Vkmc8ZBRkT8DOcu3sywQ=="
|
||||||
},
|
},
|
||||||
|
"node_modules/svg-parser": {
|
||||||
|
"version": "2.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz",
|
||||||
|
"integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ=="
|
||||||
|
},
|
||||||
"node_modules/terser": {
|
"node_modules/terser": {
|
||||||
"version": "5.12.1",
|
"version": "5.12.1",
|
||||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz",
|
"resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz",
|
||||||
@ -1110,6 +1143,17 @@
|
|||||||
"optional": true
|
"optional": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"node_modules/xml-js": {
|
||||||
|
"version": "1.6.11",
|
||||||
|
"resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz",
|
||||||
|
"integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==",
|
||||||
|
"dependencies": {
|
||||||
|
"sax": "^1.2.4"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"xml-js": "bin/cli.js"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@ -1377,6 +1421,14 @@
|
|||||||
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
|
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"fast-xml-parser": {
|
||||||
|
"version": "4.0.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.0.7.tgz",
|
||||||
|
"integrity": "sha512-dMtibyus3kC7nbxj1CpVtysLzO13UOAZEFAb5vpQg3T4O6qvetmSePpXKFx5KPNCHKoGwjtgjfF5DOyn7s1ylQ==",
|
||||||
|
"requires": {
|
||||||
|
"strnum": "^1.0.5"
|
||||||
|
}
|
||||||
|
},
|
||||||
"fill-range": {
|
"fill-range": {
|
||||||
"version": "7.0.1",
|
"version": "7.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
|
||||||
@ -1782,6 +1834,11 @@
|
|||||||
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
|
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"sax": {
|
||||||
|
"version": "1.2.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
|
||||||
|
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
|
||||||
|
},
|
||||||
"semiver": {
|
"semiver": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/semiver/-/semiver-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/semiver/-/semiver-1.1.0.tgz",
|
||||||
@ -1851,6 +1908,11 @@
|
|||||||
"integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
|
"integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"strnum": {
|
||||||
|
"version": "1.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
|
||||||
|
"integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA=="
|
||||||
|
},
|
||||||
"supports-color": {
|
"supports-color": {
|
||||||
"version": "5.5.0",
|
"version": "5.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
|
||||||
@ -1877,6 +1939,11 @@
|
|||||||
"resolved": "https://registry.npmjs.org/svelte-toasts/-/svelte-toasts-1.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/svelte-toasts/-/svelte-toasts-1.1.2.tgz",
|
||||||
"integrity": "sha512-m+yL4eEKXyJoyjTYaH1j1GFwF0Pi8YDqnVfwWPDmwi4712iZesv+TNCmToSNlav3R5Vkmc8ZBRkT8DOcu3sywQ=="
|
"integrity": "sha512-m+yL4eEKXyJoyjTYaH1j1GFwF0Pi8YDqnVfwWPDmwi4712iZesv+TNCmToSNlav3R5Vkmc8ZBRkT8DOcu3sywQ=="
|
||||||
},
|
},
|
||||||
|
"svg-parser": {
|
||||||
|
"version": "2.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz",
|
||||||
|
"integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ=="
|
||||||
|
},
|
||||||
"terser": {
|
"terser": {
|
||||||
"version": "5.12.1",
|
"version": "5.12.1",
|
||||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz",
|
"resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz",
|
||||||
@ -1920,6 +1987,14 @@
|
|||||||
"integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==",
|
"integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {}
|
"requires": {}
|
||||||
|
},
|
||||||
|
"xml-js": {
|
||||||
|
"version": "1.6.11",
|
||||||
|
"resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz",
|
||||||
|
"integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==",
|
||||||
|
"requires": {
|
||||||
|
"sax": "^1.2.4"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
"name": "svelte-app",
|
"name": "svelte-app",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "rollup -c",
|
"build": "rollup -c",
|
||||||
"dev": "rollup -c -w",
|
"dev": "rollup -c -w",
|
||||||
@ -20,7 +21,10 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@rollup/plugin-json": "^4.1.0",
|
"@rollup/plugin-json": "^4.1.0",
|
||||||
"axios": "^0.26.1",
|
"axios": "^0.26.1",
|
||||||
|
"fast-xml-parser": "^4.0.7",
|
||||||
"sirv-cli": "^2.0.0",
|
"sirv-cli": "^2.0.0",
|
||||||
"svelte-toasts": "^1.1.2"
|
"svelte-toasts": "^1.1.2",
|
||||||
|
"svg-parser": "^2.0.4",
|
||||||
|
"xml-js": "^1.6.11"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -22,7 +22,6 @@ export default {
|
|||||||
* @param {*} input
|
* @param {*} input
|
||||||
*/
|
*/
|
||||||
async toBase64(input) {
|
async toBase64(input) {
|
||||||
console.log(input)
|
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
if (input.files.length == 0){
|
if (input.files.length == 0){
|
||||||
resolve(null)
|
resolve(null)
|
||||||
@ -52,5 +51,41 @@ export default {
|
|||||||
reject(error)
|
reject(error)
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read data of file/files selected in input as string
|
||||||
|
* @param {*} input
|
||||||
|
*/
|
||||||
|
async read(input) {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
if (input.files.length == 0){
|
||||||
|
resolve(null)
|
||||||
}
|
}
|
||||||
|
else if (input.files.length == 1){
|
||||||
|
this.readFile(input.files[0]).then(resolve)
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Promise.all(Array(...input.files).map(this.readFile)).then(resolve)
|
||||||
|
}
|
||||||
|
);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read data of file/files selected in input as string
|
||||||
|
* @param {*} input
|
||||||
|
*/
|
||||||
|
async readFile(file) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
var reader = new FileReader();
|
||||||
|
reader.readAsText(file);
|
||||||
|
|
||||||
|
reader.onload = function () {
|
||||||
|
resolve(reader.result)
|
||||||
|
};
|
||||||
|
reader.onerror = function (error) {
|
||||||
|
reject(error)
|
||||||
|
};
|
||||||
|
});
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,22 +1,25 @@
|
|||||||
{
|
{
|
||||||
"wellhead": {
|
"wellhead": {
|
||||||
"stroke-width": 1,
|
"font-family": "Times New Roman",
|
||||||
"stroke": "#000",
|
"font-weight": "bold",
|
||||||
"fill": "#fff"
|
"stroke-width": "0.5mm",
|
||||||
|
"font-size":"10pt",
|
||||||
|
"stroke": "#fff",
|
||||||
|
"fill": "#000"
|
||||||
},
|
},
|
||||||
"gpt": {
|
"gpt": {
|
||||||
"stroke-width": 0,
|
"stroke-width": 1,
|
||||||
"stroke": "#ff0",
|
"stroke": "#000",
|
||||||
"fill": "#ff0"
|
"fill": "#ff0"
|
||||||
},
|
},
|
||||||
"opt": {
|
"opt": {
|
||||||
"stroke-width": 1,
|
"stroke-width": 1,
|
||||||
"stroke": "#f00",
|
"stroke": "#000",
|
||||||
"fill": "#00f"
|
"fill": "#B86B41"
|
||||||
},
|
},
|
||||||
"wpt": {
|
"wpt": {
|
||||||
"stroke-width": 1,
|
"stroke-width": 1,
|
||||||
"stroke": "#f00",
|
"stroke": "#000",
|
||||||
"fill": "#00f"
|
"fill": "#67c2e5"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
74
src/svgmap/SvgMapParser.js
Normal file
74
src/svgmap/SvgMapParser.js
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
// import convert from 'xml-js/index.js'
|
||||||
|
// import { XMLParser, XMLBuilder, XMLValidator} from 'fast-xml-parser'
|
||||||
|
import { parse } from 'svg-parser'
|
||||||
|
|
||||||
|
// var convert = require('xml-js');
|
||||||
|
|
||||||
|
export default class {
|
||||||
|
async parse(xml){
|
||||||
|
let result1 = parse(xml);
|
||||||
|
|
||||||
|
this.svg = result1.children.filter(x => x.tagName =='svg')[0]
|
||||||
|
}
|
||||||
|
|
||||||
|
get_layers(){
|
||||||
|
return this.svg.children.filter(x => x.tagName == 'g')
|
||||||
|
}
|
||||||
|
|
||||||
|
get_map_scale(){
|
||||||
|
// console.log(this.svg)
|
||||||
|
let vb = this.svg.properties.viewBox.split(' ').map(x => parseFloat(x))
|
||||||
|
let w = this.svg.properties.width
|
||||||
|
let h = this.svg.properties.height
|
||||||
|
|
||||||
|
let units = {
|
||||||
|
'in': 25.4,
|
||||||
|
'mm': 1,
|
||||||
|
'cm': 10,
|
||||||
|
'px': 0.0846646,
|
||||||
|
// '%': 1
|
||||||
|
}
|
||||||
|
|
||||||
|
const u = Object.keys(units).filter(x => w.endsWith(x))[0]
|
||||||
|
if (!u) throw "Unsupported units"
|
||||||
|
|
||||||
|
w = Math.round(parseFloat(w.substring(0, w.length - u.length)) * units[u] * 100) / 100
|
||||||
|
h = Math.round(parseFloat(h.substring(0, h.length - u.length)) * units[u] * 100) / 100
|
||||||
|
let k = vb[2] / w
|
||||||
|
|
||||||
|
return {w, h, k, u}
|
||||||
|
}
|
||||||
|
|
||||||
|
extract_anchor(layer){
|
||||||
|
let w1 = this.extract_well(layer.children[layer.children.length - 1])
|
||||||
|
let w2 = this.extract_well(layer.children[layer.children.length - 2])
|
||||||
|
|
||||||
|
return{w1, w2}
|
||||||
|
}
|
||||||
|
|
||||||
|
_flat(node){
|
||||||
|
if (!node.children) return [node];
|
||||||
|
return node.children.reduce((s, c) => s.concat(this._flat(c)), [node])
|
||||||
|
}
|
||||||
|
|
||||||
|
extract_well(pivot_group){
|
||||||
|
let scale = this.get_map_scale()
|
||||||
|
|
||||||
|
let flat = this._flat(pivot_group)
|
||||||
|
///// console.log('pivot_group', pivot_group.children)
|
||||||
|
// console.log('FLAT---', flat)
|
||||||
|
let ellipse = flat.filter(x => x.tagName =='circle' || x.tagName =='ellipse')[0]
|
||||||
|
// console.log('ellipse', ellipse)
|
||||||
|
let tr = ellipse.properties.transform.replace('matrix(', '').replace(')', '').split(' ').map(x => parseFloat(x))
|
||||||
|
// console.log('tr', tr)
|
||||||
|
// let x = ellipse.properties.transform
|
||||||
|
// let y = ellipse.cy.baseVal.value
|
||||||
|
|
||||||
|
let text = flat.filter(x => x.type =='text')[0]
|
||||||
|
// console.log('text', text)
|
||||||
|
let name = text.value
|
||||||
|
return {x: tr[4], y: tr[5], name}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user