diff --git a/.DS_Store b/.DS_Store index b5e3024..dc7d939 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/css/app.243599e3.css b/css/app.243599e3.css new file mode 100644 index 0000000..eebe400 --- /dev/null +++ b/css/app.243599e3.css @@ -0,0 +1 @@ +.landing-page[data-v-64799410]{max-width:800px;margin:0 auto}.gallery[data-v-64799410]{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));grid-gap:20px}.gallery-item img[data-v-64799410]{max-width:100%;height:auto}#colors-graph[data-v-32acb1d8],#trees-graph[data-v-4721e071]{width:100%;height:100vh} \ No newline at end of file diff --git a/css/app.a1ee4f31.css b/css/app.a1ee4f31.css deleted file mode 100644 index ef7413d..0000000 --- a/css/app.a1ee4f31.css +++ /dev/null @@ -1 +0,0 @@ -.landing-page[data-v-03caad2c]{max-width:800px;margin:0 auto}.gallery[data-v-03caad2c]{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));grid-gap:20px}.gallery-item img[data-v-03caad2c]{max-width:100%;height:auto}#colors-graph[data-v-32acb1d8],#trees-graph[data-v-4721e071]{width:100%;height:100vh} \ No newline at end of file diff --git a/img/code.746f4ea3.png b/img/code.746f4ea3.png new file mode 100644 index 0000000..ab19e56 Binary files /dev/null and b/img/code.746f4ea3.png differ diff --git a/index.html b/index.html index 50315c3..3ddf47d 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -vue
\ No newline at end of file +vue
\ No newline at end of file diff --git a/js/app.718228c4.js b/js/app.718228c4.js deleted file mode 100644 index 705d355..0000000 --- a/js/app.718228c4.js +++ /dev/null @@ -1,2 +0,0 @@ -(function(){"use strict";var e={8959:function(e,n,r){var o=r(9242),t=r(2483),a=r(3396);function i(e,n,r,o,t,i){const s=(0,a.up)("router-view");return(0,a.wg)(),(0,a.j4)(s)}var s={name:"App"},c=r(89);const l=(0,c.Z)(s,[["render",i]]);var u=l,p=r(7139);const h=e=>((0,a.dD)("data-v-03caad2c"),e=e(),(0,a.Cn)(),e),d={class:"landing-page"},f=h((()=>(0,a._)("h1",null,"Welcome to The Virtuous Graph",-1))),g=h((()=>(0,a._)("h3",null,"Graph as Code; Code as Graph",-1))),m=h((()=>(0,a._)("p",null,"Our motto represents our vision of programming: taking a graph-centric approach to programming itself - to visualize the program as a graph and ultimately to modify a graph to modify a program.",-1))),v=h((()=>(0,a._)("h2",null,"Graphs:",-1))),w={class:"gallery"},_=["src","alt"],b=h((()=>(0,a._)("p",null,"More to come soon. Email me at michaelbauer.com for more information.",-1))),y=h((()=>(0,a._)("footer",null,"© Copyright 2024 RadialNexus",-1)));function O(e,n,r,o,t,i){const s=(0,a.up)("router-link");return(0,a.wg)(),(0,a.iD)("div",d,[f,g,m,v,(0,a._)("div",w,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(t.graphs,((e,n)=>((0,a.wg)(),(0,a.iD)("div",{class:"gallery-item",key:n},[(0,a._)("h3",null,(0,p.zw)(e.title),1),(0,a._)("p",null,(0,p.zw)(e.headline),1),(0,a.Wm)(s,{to:e.route},{default:(0,a.w5)((()=>[(0,a._)("img",{src:e.imageSrc,alt:e.title},null,8,_)])),_:2},1032,["to"]),(0,a._)("p",null,(0,p.zw)(e.description),1)])))),128))]),b,y])}var j={name:"LandingPage",data(){return{graphs:[{title:"Trees",headline:"Exceptional Trees in Hawaii",description:"This is the transformation of a spreadsheet of Exceptional Trees in Hawaii, their names, species, locations, and island, into a 3D Force Graph. The 3D view allows some new perspective for exploring a dataset. Through the RadialNEXUS software, a transformation of the spreadsheet into Cypher code for loading into a Neo4j Graph supports another way to explore the data set.",imageSrc:r(4090),route:"/trees"},{title:"Colors",headline:"Recursive generation of RGB colors",description:"This shows two things. First, the progression of colors as fixed, incremental changes are made in one of the color dimensions. Second, the recursion itself is revealed as changes are made along the different dimensions and until all changes are completed.",imageSrc:r(2923),route:"/colors"}]}}};const x=(0,c.Z)(j,[["render",O],["__scopeId","data-v-03caad2c"]]);var T=x;const k={id:"trees-graph"};function C(e,n,r,o,t,i){return(0,a.wg)(),(0,a.iD)("div",k)}var D=r(4274),G={name:"TreesGraph",mounted(){fetch("domain/trees.json").then((e=>e.json())).then((e=>{const n=(0,D.Z)()(this.$el);n.graphData(e)})).catch((e=>console.error(e)))}};const Z=(0,c.Z)(G,[["render",C],["__scopeId","data-v-4721e071"]]);var $=Z;const E={id:"colors-graph"};function S(e,n,r,o,t,i){return(0,a.wg)(),(0,a.iD)("div",E)}var z=r(1114);function I(e){e=e.replace(/^#/,"");const n=parseInt(e,16),r=n>>16&255,o=n>>8&255,t=255&n;return`rgb(${r}, ${o}, ${t})`}var P={name:"ColorsGraph",mounted(){fetch("domain/colors.json").then((e=>e.json())).then((e=>{const n=(0,D.Z)()(this.$el);n.graphData(e).nodeThreeObject((e=>{const n=new z.Kj0(new z.xo$(12),new z.vBJ({color:I(e.color)}));return n})).linkColor((()=>"rgba(255, 255, 255, 0.5)")).linkOpacity(.5)})).catch((e=>console.error(e)))}};const R=(0,c.Z)(P,[["render",S],["__scopeId","data-v-32acb1d8"]]);var F=R;const H=(0,t.p7)({history:(0,t.PO)(),routes:[{path:"/",component:T},{path:"/trees",component:$},{path:"/colors",component:F}]}),N=(0,o.ri)(u);N.use(H),N.mount("#app")},2923:function(e,n,r){e.exports=r.p+"img/colors.5df2b206.png"},4090:function(e,n,r){e.exports=r.p+"img/trees.716e32e2.png"}},n={};function r(o){var t=n[o];if(void 0!==t)return t.exports;var a=n[o]={exports:{}};return e[o].call(a.exports,a,a.exports,r),a.exports}r.m=e,function(){var e=[];r.O=function(n,o,t,a){if(!o){var i=1/0;for(u=0;u=a)&&Object.keys(r.O).every((function(e){return r.O[e](o[c])}))?o.splice(c--,1):(s=!1,a0&&e[u-1][2]>a;u--)e[u]=e[u-1];e[u]=[o,t,a]}}(),function(){r.n=function(e){var n=e&&e.__esModule?function(){return e["default"]}:function(){return e};return r.d(n,{a:n}),n}}(),function(){r.d=function(e,n){for(var o in n)r.o(n,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:n[o]})}}(),function(){r.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){r.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)}}(),function(){r.p="/"}(),function(){var e={143:0};r.O.j=function(n){return 0===e[n]};var n=function(n,o){var t,a,i=o[0],s=o[1],c=o[2],l=0;if(i.some((function(n){return 0!==e[n]}))){for(t in s)r.o(s,t)&&(r.m[t]=s[t]);if(c)var u=c(r)}for(n&&n(o);l\n \n\n\n\n\n","import { render } from \"./App.vue?vue&type=template&id=9b61d254\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport \"./App.vue?vue&type=style&index=0&id=9b61d254&lang=css\"\n\nimport exportComponent from \"../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n\n\n\n\n\n\n\n","import { render } from \"./LandingPage.vue?vue&type=template&id=03caad2c&scoped=true\"\nimport script from \"./LandingPage.vue?vue&type=script&lang=js\"\nexport * from \"./LandingPage.vue?vue&type=script&lang=js\"\n\nimport \"./LandingPage.vue?vue&type=style&index=0&id=03caad2c&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-03caad2c\"]])\n\nexport default __exports__","\n\n\n\n\n","import { render } from \"./TreesGraph.vue?vue&type=template&id=4721e071&scoped=true\"\nimport script from \"./TreesGraph.vue?vue&type=script&lang=js\"\nexport * from \"./TreesGraph.vue?vue&type=script&lang=js\"\n\nimport \"./TreesGraph.vue?vue&type=style&index=0&id=4721e071&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4721e071\"]])\n\nexport default __exports__","\n\n\n\n\n","import { render } from \"./ColorsGraph.vue?vue&type=template&id=32acb1d8&scoped=true\"\nimport script from \"./ColorsGraph.vue?vue&type=script&lang=js\"\nexport * from \"./ColorsGraph.vue?vue&type=script&lang=js\"\n\nimport \"./ColorsGraph.vue?vue&type=style&index=0&id=32acb1d8&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-32acb1d8\"]])\n\nexport default __exports__","// Import Vue from the 'vue' package\nimport { createApp } from 'vue';\n// Import VueRouter from the 'vue-router' package\nimport { createRouter, createWebHistory } from 'vue-router';\n// Import App.vue component\nimport App from './App.vue';\n// Import LandingPage.vue component\nimport LandingPage from './views/LandingPage.vue';\n// Import TreesGraph.vue component\nimport TreesGraph from './views/TreesGraph.vue';\n// Import ColorsGraph.vue component\nimport ColorsGraph from './views/ColorsGraph.vue';\n\n// Create a Vue Router instance\nconst router = createRouter({\n history: createWebHistory(),\n routes: [\n { path: '/', component: LandingPage },\n { path: '/trees', component: TreesGraph },\n { path: '/colors', component: ColorsGraph }\n ]\n});\n\n// Create a Vue app instance\nconst app = createApp(App);\n\n// Use Vue Router with the Vue app instance\napp.use(router);\n\n// Mount the Vue app to the DOM\napp.mount('#app');\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkvue\"] = self[\"webpackChunkvue\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(8959); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["_createBlock","_component_router_view","name","__exports__","render","class","_createElementVNode","_createElementBlock","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_Fragment","_renderList","$data","graphs","graph","index","key","_toDisplayString","title","headline","_createVNode","_component_router_link","to","route","default","_withCtx","src","imageSrc","alt","_hoisted_7","_","description","_hoisted_8","_hoisted_9","data","require","id","mounted","fetch","then","res","json","myGraph","ForceGraph3D","this","$el","graphData","catch","err","console","error","hexToRgb","hex","replace","bigint","parseInt","r","g","b","nodeThreeObject","node","obj","THREE","color","linkColor","linkOpacity","router","createRouter","history","createWebHistory","routes","path","component","LandingPage","TreesGraph","ColorsGraph","app","createApp","App","use","mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","call","m","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","splice","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","globalThis","Function","e","window","prop","prototype","hasOwnProperty","p","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","forEach","bind","push","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/js/app.fec24c1c.js b/js/app.fec24c1c.js new file mode 100644 index 0000000..672be2a --- /dev/null +++ b/js/app.fec24c1c.js @@ -0,0 +1,2 @@ +(function(){"use strict";var e={2798:function(e,n,t){var r=t(9242),o=t(2483),a=t(3396);function i(e,n,t,r,o,i){const s=(0,a.up)("router-view");return(0,a.wg)(),(0,a.j4)(s)}var s={name:"App"},c=t(89);const d=(0,c.Z)(s,[["render",i]]);var l=d,u=t(7139);const p=e=>((0,a.dD)("data-v-64799410"),e=e(),(0,a.Cn)(),e),h={class:"landing-page"},m=p((()=>(0,a._)("h1",null,"Welcome to The Virtuous Graph",-1))),g=p((()=>(0,a._)("h3",null,"Graph as Code; Code as Graph",-1))),f=p((()=>(0,a._)("p",null,"Our motto represents our vision of programming: taking a graph-centric approach to programming itself - to visualize the program as a graph and ultimately to modify a graph to modify a program.",-1))),v=p((()=>(0,a._)("p",null,"Graphs come from many sources and are manifested in many forms. While we contend code is itself a graph, in terms of data, the most common source by far are spreadsheets. Manifesting spreadsheets as graphs include the pure visualization, our favorite being 3D, and the operational, our preferred choice unquestionably being the Labeled Property Graph from Neo4j.",-1))),_=p((()=>(0,a._)("h2",null,"Graphs:",-1))),w={class:"gallery"},E=["src","alt"],T=p((()=>(0,a._)("p",null,"Both the 3D view and the Cypher code were generated from our RadialNEXUS manifest script. The script takes a data spreadsheet and a mapping spreadsheet. The data spreadsheet has rows and columns for representing the data in a domain. The mapping spreadsheet maps the columns in the data spreadsheet to the nodes and attributes in the graph representation along with the edges between those nodes. We're in the process of packaging the code further but like to gauge interest first. Please email me at michaelbauer.com if you'd like to learn more.",-1))),O=p((()=>(0,a._)("footer",null,"© Copyright 2024 RadialNexus",-1)));function S(e,n,t,r,o,i){const s=(0,a.up)("router-link");return(0,a.wg)(),(0,a.iD)("div",h,[m,g,f,v,_,(0,a._)("div",w,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(o.graphs,((e,n)=>((0,a.wg)(),(0,a.iD)("div",{class:"gallery-item",key:n},[(0,a._)("h3",null,(0,u.zw)(e.title),1),(0,a._)("p",null,(0,u.zw)(e.headline),1),(0,a.Wm)(s,{to:e.route},{default:(0,a.w5)((()=>[(0,a._)("img",{src:e.imageSrc,alt:e.title},null,8,E)])),_:2},1032,["to"]),(0,a._)("p",null,(0,u.zw)(e.description),1)])))),128))]),T,O])}var y={name:"LandingPage",data(){return{graphs:[{title:"Trees",headline:"Exceptional Trees in Hawaii: 3D",description:"This is the transformation of a spreadsheet of Exceptional Trees in Hawaii, their names, species, locations, and island, into a 3D Force Graph. The 3D view allows some new perspective for exploring a dataset.",imageSrc:t(4090),route:"/trees"},{title:"Trees",headline:"Exceptional Trees in Hawaii: Cypher",description:"This is the transformation of a spreadsheet of Exceptional Trees in Hawaii, their names, species, locations, and island, into Cypher Code.",imageSrc:t(6259),route:"/codes"},{title:"Colors",headline:"Recursive generation of RGB colors",description:"This shows two things. First, the progression of colors as fixed, incremental changes are made in one of the color dimensions. Second, the recursion itself is revealed as changes are made along the different dimensions and until all changes are completed.",imageSrc:t(2923),route:"/colors"}]}}};const b=(0,c.Z)(y,[["render",S],["__scopeId","data-v-64799410"]]);var R=b;const x={id:"trees-graph"};function H(e,n,t,r,o,i){return(0,a.wg)(),(0,a.iD)("div",x)}var D=t(4274),A={name:"TreesGraph",mounted(){fetch("domain/trees.json").then((e=>e.json())).then((e=>{const n=(0,D.Z)()(this.$el);n.graphData(e)})).catch((e=>console.error(e)))}};const L=(0,c.Z)(A,[["render",H],["__scopeId","data-v-4721e071"]]);var C=L;const I={id:"colors-graph"};function M(e,n,t,r,o,i){return(0,a.wg)(),(0,a.iD)("div",I)}var W=t(1114);function G(e){e=e.replace(/^#/,"");const n=parseInt(e,16),t=n>>16&255,r=n>>8&255,o=255&n;return`rgb(${t}, ${r}, ${o})`}var N={name:"ColorsGraph",mounted(){fetch("domain/colors.json").then((e=>e.json())).then((e=>{const n=(0,D.Z)()(this.$el);n.graphData(e).nodeThreeObject((e=>{const n=new W.Kj0(new W.xo$(12),new W.vBJ({color:G(e.color)}));return n})).linkColor((()=>"rgba(255, 255, 255, 0.5)")).linkOpacity(.5)})).catch((e=>console.error(e)))}};const q=(0,c.Z)(N,[["render",M],["__scopeId","data-v-32acb1d8"]]);var j=q;const k=e=>((0,a.dD)("data-v-3d4a44bd"),e=e(),(0,a.Cn)(),e),F={class:"cypher-code"},V=k((()=>(0,a._)("pre",null,[(0,a._)("code",null,"\n\n# Loading Nodes from ../domain/trees/csv/data/Exceptional_Trees_On_Oahu.csv\nquery = '''\nLOAD CSV WITH HEADERS FROM \"file:///../domain/trees/csv/data/Exceptional_Trees_On_Oahu.csv\" AS row\n\tWITH row\n\tWHERE row.id IS NOT NULL\n\tMERGE (tree:Tree {id:toString(row.id)})\n\t\tSET tree.name = row.common_name\n\t\tSET tree.height = row.height\n\t\tSET tree.diameter = row.diameter\n\t\tSET tree.circumference = row.circumference\n\t\tSET tree.description = row.information\n\n'''\ngraph.run(query)\n\n# Loading Nodes from ../domain/trees/csv/data/Exceptional_Trees_On_Oahu.csv\nquery = '''\nLOAD CSV WITH HEADERS FROM \"file:///../domain/trees/csv/data/Exceptional_Trees_On_Oahu.csv\" AS row\n\tWITH row\n\tWHERE row.species_code IS NOT NULL\n\tMERGE (species:Species {id:toString(row.species_code)})\n\t\tSET species.name = row.scientific_name\n\n'''\ngraph.run(query)\n\n# Loading Nodes from ../domain/trees/csv/data/Exceptional_Trees_On_Oahu.csv\nquery = '''\nLOAD CSV WITH HEADERS FROM \"file:///../domain/trees/csv/data/Exceptional_Trees_On_Oahu.csv\" AS row\n\tWITH row\n\tWHERE row.name IS NOT NULL\n\tMERGE (location:Location {id:toString(row.name)})\n\t\tSET location.name = row.location\n\t\tSET location.latitude = row.latitude\n\t\tSET location.longitude = row.longitude\n\n'''\ngraph.run(query)\n\n# Loading Nodes from ../domain/trees/csv/data/Exceptional_Trees_On_Oahu.csv\nquery = '''\nLOAD CSV WITH HEADERS FROM \"file:///../domain/trees/csv/data/Exceptional_Trees_On_Oahu.csv\" AS row\n\tWITH row\n\tWHERE row.island_abbv IS NOT NULL\n\tMERGE (island:Island {id:toString(row.island_abbv)})\n\t\tSET island.name = row.island_name\n\n'''\ngraph.run(query)\n\n# Loading Relationships from ../domain/trees/csv/data/Exceptional_Trees_On_Oahu.csv\nquery = '''\nLOAD CSV WITH HEADERS FROM \"file:///../domain/trees/csv/data/Exceptional_Trees_On_Oahu.csv\" AS row\n\tMATCH (source:Tree {id: toString(row.id)}), (target:Location {id: toString(row.name)})\n\t\tMERGE(source)-[edge:IN_A]->(target)\n'''\ngraph.run(query)\n\n# Loading Relationships from ../domain/trees/csv/data/Exceptional_Trees_On_Oahu.csv\nquery = '''\nLOAD CSV WITH HEADERS FROM \"file:///../domain/trees/csv/data/Exceptional_Trees_On_Oahu.csv\" AS row\n\tMATCH (source:Tree {id: toString(row.id)}), (target:Species {id: toString(row.species_code)})\n\t\tMERGE(source)-[edge:IS_A]->(target)\n'''\ngraph.run(query)\n\n# Loading Relationships from ../domain/trees/csv/data/Exceptional_Trees_On_Oahu.csv\nquery = '''\nLOAD CSV WITH HEADERS FROM \"file:///../domain/trees/csv/data/Exceptional_Trees_On_Oahu.csv\" AS row\n\tMATCH (source:Location {id: toString(row.name)}), (target:Island {id: toString(row.island_abbv)})\n\t\tMERGE(source)-[edge:ON_A]->(target)\n'''\ngraph.run(query)\n\n\t")],-1))),Z=[V];function P(e,n,t,r,o,i){return(0,a.wg)(),(0,a.iD)("div",F,Z)}var $={name:"CypherCode"};const z=(0,c.Z)($,[["render",P],["__scopeId","data-v-3d4a44bd"]]);var U=z;const B=(0,o.p7)({history:(0,o.PO)(),routes:[{path:"/",component:R},{path:"/trees",component:C},{path:"/colors",component:j},{path:"/codes",component:U}]}),K=(0,r.ri)(l);K.use(B),K.mount("#app")},6259:function(e,n,t){e.exports=t.p+"img/code.746f4ea3.png"},2923:function(e,n,t){e.exports=t.p+"img/colors.5df2b206.png"},4090:function(e,n,t){e.exports=t.p+"img/trees.716e32e2.png"}},n={};function t(r){var o=n[r];if(void 0!==o)return o.exports;var a=n[r]={exports:{}};return e[r].call(a.exports,a,a.exports,t),a.exports}t.m=e,function(){var e=[];t.O=function(n,r,o,a){if(!r){var i=1/0;for(l=0;l=a)&&Object.keys(t.O).every((function(e){return t.O[e](r[c])}))?r.splice(c--,1):(s=!1,a0&&e[l-1][2]>a;l--)e[l]=e[l-1];e[l]=[r,o,a]}}(),function(){t.n=function(e){var n=e&&e.__esModule?function(){return e["default"]}:function(){return e};return t.d(n,{a:n}),n}}(),function(){t.d=function(e,n){for(var r in n)t.o(n,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:n[r]})}}(),function(){t.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)}}(),function(){t.p="/"}(),function(){var e={143:0};t.O.j=function(n){return 0===e[n]};var n=function(n,r){var o,a,i=r[0],s=r[1],c=r[2],d=0;if(i.some((function(n){return 0!==e[n]}))){for(o in s)t.o(s,o)&&(t.m[o]=s[o]);if(c)var l=c(t)}for(n&&n(r);d\n \n\n\n\n\n","import { render } from \"./App.vue?vue&type=template&id=9b61d254\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport \"./App.vue?vue&type=style&index=0&id=9b61d254&lang=css\"\n\nimport exportComponent from \"../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n\n\n\n\n\n\n\n","import { render } from \"./LandingPage.vue?vue&type=template&id=64799410&scoped=true\"\nimport script from \"./LandingPage.vue?vue&type=script&lang=js\"\nexport * from \"./LandingPage.vue?vue&type=script&lang=js\"\n\nimport \"./LandingPage.vue?vue&type=style&index=0&id=64799410&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-64799410\"]])\n\nexport default __exports__","\n\n\n\n\n","import { render } from \"./TreesGraph.vue?vue&type=template&id=4721e071&scoped=true\"\nimport script from \"./TreesGraph.vue?vue&type=script&lang=js\"\nexport * from \"./TreesGraph.vue?vue&type=script&lang=js\"\n\nimport \"./TreesGraph.vue?vue&type=style&index=0&id=4721e071&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4721e071\"]])\n\nexport default __exports__","\n\n\n\n\n","import { render } from \"./ColorsGraph.vue?vue&type=template&id=32acb1d8&scoped=true\"\nimport script from \"./ColorsGraph.vue?vue&type=script&lang=js\"\nexport * from \"./ColorsGraph.vue?vue&type=script&lang=js\"\n\nimport \"./ColorsGraph.vue?vue&type=style&index=0&id=32acb1d8&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-32acb1d8\"]])\n\nexport default __exports__","\n\n\n\n","import { render } from \"./CypherCode.vue?vue&type=template&id=3d4a44bd&scoped=true\"\nimport script from \"./CypherCode.vue?vue&type=script&lang=js\"\nexport * from \"./CypherCode.vue?vue&type=script&lang=js\"\n\nimport \"./CypherCode.vue?vue&type=style&index=0&id=3d4a44bd&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3d4a44bd\"]])\n\nexport default __exports__","// Import Vue from the 'vue' package\nimport { createApp } from 'vue';\n// Import VueRouter from the 'vue-router' package\nimport { createRouter, createWebHistory } from 'vue-router';\n// Import App.vue component\nimport App from './App.vue';\n// Import LandingPage.vue component\nimport LandingPage from './views/LandingPage.vue';\n// Import TreesGraph.vue component\nimport TreesGraph from './views/TreesGraph.vue';\n// Import ColorsGraph.vue component\nimport ColorsGraph from './views/ColorsGraph.vue';\n// Import Code.vue component\nimport CypherCode from './views/CypherCode.vue';\n\n// Create a Vue Router instance\nconst router = createRouter({\n history: createWebHistory(),\n routes: [\n { path: '/', component: LandingPage },\n { path: '/trees', component: TreesGraph },\n { path: '/colors', component: ColorsGraph },\n { path: '/codes', component: CypherCode }\n ]\n});\n\n// Create a Vue app instance\nconst app = createApp(App);\n\n// Use Vue Router with the Vue app instance\napp.use(router);\n\n// Mount the Vue app to the DOM\napp.mount('#app');\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkvue\"] = self[\"webpackChunkvue\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(2798); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["_createBlock","_component_router_view","name","__exports__","render","class","_createElementVNode","_createElementBlock","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_Fragment","_renderList","$data","graphs","graph","index","key","_toDisplayString","title","headline","_createVNode","_component_router_link","to","route","default","_withCtx","src","imageSrc","alt","_hoisted_8","_","description","_hoisted_9","_hoisted_10","data","require","id","mounted","fetch","then","res","json","myGraph","ForceGraph3D","this","$el","graphData","catch","err","console","error","hexToRgb","hex","replace","bigint","parseInt","r","g","b","nodeThreeObject","node","obj","THREE","color","linkColor","linkOpacity","router","createRouter","history","createWebHistory","routes","path","component","LandingPage","TreesGraph","ColorsGraph","CypherCode","app","createApp","App","use","mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","call","m","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","splice","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","globalThis","Function","e","window","prop","prototype","hasOwnProperty","p","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","forEach","bind","push","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file