Reorganization
parent
62e95a3309
commit
84a351c88d
@ -0,0 +1,9 @@
|
||||
'use strict';
|
||||
|
||||
require("../window");
|
||||
|
||||
require("../../views/riot/sample-view");
|
||||
|
||||
require("../../views/riot/node/create");
|
||||
|
||||
require("./component");
|
@ -0,0 +1,8 @@
|
||||
uikit-toolbar
|
||||
div
|
||||
!= "<yield/>"
|
||||
|
||||
style.
|
||||
|
||||
script.
|
||||
this.mixin(require("../../../lib/riot/mixins/dockable"));
|
@ -1,9 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
require("../window");
|
||||
|
||||
require("../../views/sample-view");
|
||||
|
||||
require("../../views/node/create");
|
||||
|
||||
require("./component");
|
@ -1,12 +1,12 @@
|
||||
'use strict';
|
||||
|
||||
var $ = require("jquery");
|
||||
var riot = require("riot");
|
||||
const $ = require("jquery");
|
||||
const riot = require("riot");
|
||||
|
||||
require("debug").enable("*");
|
||||
|
||||
require("../components/app");
|
||||
require("../../components/app");
|
||||
|
||||
$(function () {
|
||||
$(() => {
|
||||
riot.mount("*");
|
||||
});
|
||||
});
|
||||
|
@ -1,8 +1,8 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = {
|
||||
change: function change(data) {
|
||||
change: function(data) {
|
||||
Object.assign(this, data);
|
||||
this.update();
|
||||
}
|
||||
};
|
||||
}
|
@ -1,11 +1,17 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = function ($) {
|
||||
$.fn.disableSelection = function () {
|
||||
return this.attr("unselectable", "on").css("user-select", "none").on("selectstart", false);
|
||||
};
|
||||
module.exports = function($) {
|
||||
$.fn.disableSelection = function() {
|
||||
return this
|
||||
.attr("unselectable", "on")
|
||||
.css("user-select", "none")
|
||||
.on("selectstart", false);
|
||||
}
|
||||
|
||||
$.fn.enableSelection = function () {
|
||||
return this.removeAttr("unselectable").css("user-select", "auto").off("selectstart", false);
|
||||
};
|
||||
};
|
||||
$.fn.enableSelection = function() {
|
||||
return this
|
||||
.removeAttr("unselectable")
|
||||
.css("user-select", "auto")
|
||||
.off("selectstart", false);
|
||||
}
|
||||
}
|
@ -1,21 +0,0 @@
|
||||
"use strict";
|
||||
|
||||
var router = require("express-promise-router")();
|
||||
|
||||
router.get("/", function (req, res) {
|
||||
res.render("layout");
|
||||
});
|
||||
|
||||
router.get("/node/:uuid", function (req, res) {
|
||||
res.json({ uuid: req.params.uuid });
|
||||
});
|
||||
|
||||
router.get("/test1", function (req, res) {
|
||||
res.send("test ONE <a href='/test2'>go to 2 instead</a> <a href='/test2' target='_blank'>or in a new window</a>");
|
||||
});
|
||||
|
||||
router.get("/test2", function (req, res) {
|
||||
res.send("test TWO <a href='/test1'>go to 1 instead</a> <a href='/test1' target='_blank'>or in a new window</a>");
|
||||
});
|
||||
|
||||
module.exports = router;
|
@ -0,0 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
const createError = require("create-error");
|
||||
|
||||
module.exports = {
|
||||
NotFoundError: createError("NotFoundError", {statusCode: 404})
|
||||
};
|
@ -1,14 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
require("../../../components/uikit/frame");
|
||||
require("../../../components/uikit/toolbar");
|
||||
require("../../../components/uikit/button");
|
||||
require("../../../components/uikit/form-section");
|
||||
require("../../../components/uikit/input-spawner");
|
||||
require("../../../components/uikit/input");
|
||||
require("../../../components/uikit/textarea");
|
||||
require("../../../components/uikit/autocomplete");
|
||||
|
||||
require("../../../components/window-meta");
|
||||
|
||||
require("./component");
|
@ -0,0 +1,37 @@
|
||||
const Promise = require("bluebird");
|
||||
const rfr = require("rfr");
|
||||
const errors = rfr("lib/util/errors");
|
||||
let router = require("express-promise-router")();
|
||||
|
||||
router.get("/", (req, res) => {
|
||||
res.render("layout");
|
||||
});
|
||||
|
||||
router.get("/node/:uuid", (req, res) => {
|
||||
return Promise.try(() => {
|
||||
return db.Node.find(req.params.uuid);
|
||||
}).then((node) => {
|
||||
res.json(node);
|
||||
}).catch(db.Node.NotFoundError, (err) => {
|
||||
throw new errors.NotFoundError("Could not find a Node with that UUID");
|
||||
});
|
||||
});
|
||||
|
||||
router.post("/autocomplete/type", (req, res) => {
|
||||
return Promise.try(() => {
|
||||
// FIXME: suggest, https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters.html
|
||||
return elasticCloud.search({
|
||||
index: "types"
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
router.get("/test1", (req, res) => {
|
||||
res.send("test ONE <a href='/test2'>go to 2 instead</a> <a href='/test2' target='_blank'>or in a new window</a>");
|
||||
});
|
||||
|
||||
router.get("/test2", (req, res) => {
|
||||
res.send("test TWO <a href='/test1'>go to 1 instead</a> <a href='/test1' target='_blank'>or in a new window</a>");
|
||||
});
|
||||
|
||||
module.exports = router;
|
@ -0,0 +1,19 @@
|
||||
[{
|
||||
"name": "Domain Name"
|
||||
}, {
|
||||
"name": "IP Address"
|
||||
}, {
|
||||
"name": "Person"
|
||||
}, {
|
||||
"name": "News Article"
|
||||
}, {
|
||||
"name": "Event"
|
||||
}, {
|
||||
"name": "MAC Address"
|
||||
}, {
|
||||
"name": "Organization"
|
||||
}, {
|
||||
"name": "Product"
|
||||
}, {
|
||||
"name": "Software"
|
||||
}]
|
@ -0,0 +1,20 @@
|
||||
'use strict';
|
||||
|
||||
const fs = require("fs");
|
||||
const Promise = require("bluebird");
|
||||
const elasticSearch = new require("elasticsearch").Client({
|
||||
host: "localhost:9200",
|
||||
log: "trace"
|
||||
});
|
||||
|
||||
let nodeTypes = JSON.parse(fs.readFileSync("./sample/elasticsearch-node-types.json"));
|
||||
|
||||
Promise.map(nodeTypes, (type) => {
|
||||
return elasticSearch.create({
|
||||
index: "node_types",
|
||||
type: "node_type",
|
||||
body: type
|
||||
});
|
||||
}).then((results) => {
|
||||
console.log(results);
|
||||
});
|
@ -1,9 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
require("../window");
|
||||
|
||||
require("../../views/sample-view");
|
||||
|
||||
require("../../views/node/create");
|
||||
|
||||
require("./component");
|
@ -1,3 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
require("./component");
|
@ -1,3 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
require("./component");
|
@ -1,3 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
require("./component");
|
@ -1,3 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
require("./component");
|
@ -1,3 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
require("./component");
|
@ -1,3 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
require("./component");
|
@ -1,3 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
require("./component");
|
@ -1,8 +0,0 @@
|
||||
uikit-toolbar
|
||||
div
|
||||
!= "<yield/>"
|
||||
|
||||
style.
|
||||
|
||||
script.
|
||||
this.mixin(require("../../../riot/mixins/dockable"));
|
@ -1,3 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
require("./component");
|
@ -1,3 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
require("./component");
|
@ -1,3 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
require("./component");
|
@ -1,5 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
require("../view-manager");
|
||||
|
||||
require("./component");
|
@ -1,12 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
const $ = require("jquery");
|
||||
const riot = require("riot");
|
||||
|
||||
require("debug").enable("*");
|
||||
|
||||
require("../components/app");
|
||||
|
||||
$(() => {
|
||||
riot.mount("*");
|
||||
});
|
@ -1,8 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = {
|
||||
change: function(data) {
|
||||
Object.assign(this, data);
|
||||
this.update();
|
||||
}
|
||||
}
|
@ -1,58 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
const riotQuery = require("riot-query");
|
||||
const arrayDiff = require("arraydiff");
|
||||
|
||||
module.exports = {
|
||||
init: function() {
|
||||
let knownTags = [];
|
||||
let listeners = {};
|
||||
|
||||
function triggerEvent(action, query, item) {
|
||||
if (listeners[query] != null && listeners[query][action] != null) {
|
||||
listeners[query][action].forEach((handler) => {
|
||||
handler(item);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
this.on("updated", () => {
|
||||
Object.keys(listeners).forEach((query) => {
|
||||
let currentTags = riotQuery(this, query);
|
||||
let diff = arrayDiff(knownTags, currentTags);
|
||||
|
||||
diff.forEach((item) => {
|
||||
if (item.type === "remove") {
|
||||
for (let i = item.index; i < (item.index + item.howMany); i++) {
|
||||
triggerEvent("remove", query, knownTags[i]);
|
||||
}
|
||||
} else if (item.type === "move") {
|
||||
for (let i = item.index; i < (item.from + item.howMany); i++) {
|
||||
triggerEvent("move", query, knownTags[i]);
|
||||
}
|
||||
} else if (item.type === "insert") {
|
||||
item.values.forEach((value) => {
|
||||
triggerEvent("create", query, value);
|
||||
})
|
||||
}
|
||||
});
|
||||
|
||||
knownTags = currentTags;
|
||||
});
|
||||
});
|
||||
|
||||
this.onChild = function(eventName, handler) {
|
||||
let [action, query] = eventName.split(":", 2);
|
||||
|
||||
if (listeners[query] == null) {
|
||||
listeners[query] = {};
|
||||
}
|
||||
|
||||
if (listeners[query][action] == null) {
|
||||
listeners[query][action] = [];
|
||||
}
|
||||
|
||||
listeners[query][action].push(handler);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,120 +0,0 @@
|
||||
const Promise = require("bluebird");
|
||||
const pathToRegexp = require("path-to-regexp");
|
||||
const url = require("url");
|
||||
const xtend = require("xtend");
|
||||
const defaultValue = require("default-value");
|
||||
|
||||
module.exports = function() {
|
||||
let routes = [];
|
||||
|
||||
function addRoute(method, path, handler) {
|
||||
// Mutable arguments? WTF.
|
||||
let keys = [];
|
||||
let regex = pathToRegexp(path, keys);
|
||||
|
||||
routes.push({ method, path, regex, keys, handler });
|
||||
}
|
||||
|
||||
function getRoute(method, path) {
|
||||
let matches;
|
||||
let matchingRoute = routes.find((route) => route.method === method && (matches = route.regex.exec(path)));
|
||||
|
||||
if (matchingRoute == null) {
|
||||
throw new Error("No matching routes found");
|
||||
} else {
|
||||
let params = {};
|
||||
|
||||
matchingRoute.keys.forEach((key, i) => {
|
||||
params[key] = matches[i + 1];
|
||||
});
|
||||
|
||||
return {
|
||||
handler: matchingRoute.handler,
|
||||
params: params
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function handle(method, uri, data) {
|
||||
return Promise.try(() => {
|
||||
let {path, query} = url.parse(uri, true);
|
||||
let route = getRoute(method, path);
|
||||
let tasks = [];
|
||||
|
||||
let req = {
|
||||
path: path,
|
||||
query: query,
|
||||
body: data,
|
||||
params: route.params,
|
||||
pass: function(options = {}) {
|
||||
// FIXME: window.fetch passthrough
|
||||
},
|
||||
passRender: function(viewName, options = {}) {
|
||||
return Promise.try(() => {
|
||||
return this.pass(options);
|
||||
}).then((response) => {
|
||||
let locals = defaultValue(options.locals, {});
|
||||
let combinedLocals = xtend(locals, response.body);
|
||||
|
||||
res.render(viewName, combinedLocals, options);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
let res = {
|
||||
render: function(viewName, locals = {}, options = {}) {
|
||||
tasks.push({
|
||||
type: "render",
|
||||
viewName, locals, options
|
||||
});
|
||||
},
|
||||
open: function(path, options = {}) {
|
||||
tasks.push({
|
||||
type: "open",
|
||||
path, options
|
||||
});
|
||||
},
|
||||
close: function(options = {}) {
|
||||
tasks.push({
|
||||
type: "close",
|
||||
options
|
||||
});
|
||||
},
|
||||
notify: function(message, options = {}) {
|
||||
tasks.push({
|
||||
type: "notify",
|
||||
message, options
|
||||
});
|
||||
},
|
||||
error: function(error, context = {}) {
|
||||
tasks.push({
|
||||
type: "error",
|
||||
error, context
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return Promise.try(() => {
|
||||
return route.handler(req, res);
|
||||
}).then((result) => {
|
||||
return {
|
||||
result: result,
|
||||
actions: tasks
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
let api = {
|
||||
get: addRoute.bind(api, "get"),
|
||||
post: addRoute.bind(api, "post"),
|
||||
put: addRoute.bind(api, "put"),
|
||||
delete: addRoute.bind(api, "delete"),
|
||||
head: addRoute.bind(api, "head"),
|
||||
patch: addRoute.bind(api, "patch"),
|
||||
addRoute: addRoute,
|
||||
handle: handle
|
||||
}
|
||||
|
||||
return api;
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
const debounce = require("debounce");
|
||||
const defaultValue = require("default-value");
|
||||
|
||||
const selectable = require("./selectable");
|
||||
|
||||
module.exports = function($) {
|
||||
selectable($);
|
||||
|
||||
$.fn.draggable = function(options = {}) {
|
||||
let debounceInterval = defaultValue(options.debounce, 10);
|
||||
|
||||
this.on("mousedown", (event) => {
|
||||
let startX = event.pageX;
|
||||
let startY = event.pageY;
|
||||
|
||||
let moveHandler = debounce((event) => {
|
||||
this.trigger("draggable:move", [{
|
||||
offsetX: event.pageX - startX,
|
||||
offsetY: event.pageY - startY
|
||||
}]);
|
||||
}, debounceInterval);
|
||||
|
||||
$(document).on("mousemove", moveHandler);
|
||||
|
||||
$(document).one("mouseup", (event) => {
|
||||
$(document).off("mousemove", moveHandler);
|
||||
$(document).enableSelection();
|
||||
|
||||
this.trigger("draggable:end");
|
||||
});
|
||||
|
||||
$(document).disableSelection();
|
||||
|
||||
this.trigger("draggable:start");
|
||||
});
|
||||
}
|
||||
}
|
@ -1,17 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = function($) {
|
||||
$.fn.disableSelection = function() {
|
||||
return this
|
||||
.attr("unselectable", "on")
|
||||
.css("user-select", "none")
|
||||
.on("selectstart", false);
|
||||
}
|
||||
|
||||
$.fn.enableSelection = function() {
|
||||
return this
|
||||
.removeAttr("unselectable")
|
||||
.css("user-select", "auto")
|
||||
.off("selectstart", false);
|
||||
}
|
||||
}
|
@ -1,130 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
const elementSize = require("element-size");
|
||||
const sortDockable = require("./util/sort-dockables");
|
||||
|
||||
function px(pixels) {
|
||||
return `${pixels}px`;
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
init: function() {
|
||||
console.log("foo", this);
|
||||
let dockableAPI = {
|
||||
isActive: () => {
|
||||
return (this.opts.dockableContainer != null);
|
||||
},
|
||||
stack: [],
|
||||
fillElement: null,
|
||||
recalculateLayout: () => {
|
||||
dockableAPI.stack.forEach((item, i) => {
|
||||
item.stackIndex = i;
|
||||
});
|
||||
|
||||
let orderedStack = dockableAPI.stack.slice().sort(sortDockable);
|
||||
|
||||
let reservedLeft = 0;
|
||||
let reservedRight = 0;
|
||||
let reservedTop = 0;
|
||||
let reservedBottom = 0;
|
||||
|
||||
orderedStack.forEach((item) => {
|
||||
let element = item.tag.root;
|
||||
|
||||
/* We set the positioning to absolute *before* attempting
|
||||
* to obtain the element size - this way, we can be sure
|
||||
* that the element won't try to stretch to its container.
|
||||
* Instead, it'll be auto-sized, which is exactly what we
|
||||
* want. */
|
||||
element.style.position = "absolute";
|
||||
|
||||
let [width, height] = elementSize(element);
|
||||
|
||||
if (item.heightHint != null) {
|
||||
height = item.heightHint;
|
||||
}
|
||||
|
||||
if (item.widthHint != null) {
|
||||
width = item.widthHint;
|
||||
}
|
||||
|
||||
// FIXME: Should the following really be errors?
|
||||
if ((item.side === "left" || item.side === "right") && width === 0) {
|
||||
throw new Error("Cannot horizontally dock an element without a width; you may need to specify a dock-width");
|
||||
} else if ((item.side === "top" || item.side === "bottom") && height === 0) {
|
||||
throw new Error("Cannot vertically dock an element without a height; you may need to specify a dock-height");
|
||||
}
|
||||
|
||||
if (item.side === "left") {
|
||||
Object.assign(element.style, {
|
||||
left: px(reservedLeft),
|
||||
top: px(reservedTop),
|
||||
bottom: px(reservedBottom)
|
||||
});
|
||||
|
||||
delete element.style.right;
|
||||
|
||||
reservedLeft += width;
|
||||
} else if (item.side === "right") {
|
||||
Object.assign(element.style, {
|
||||
right: px(reservedRight),
|
||||
top: px(reservedTop),
|
||||
bottom: px(reservedBottom)
|
||||
});
|
||||
|
||||
delete element.style.left;
|
||||
|
||||
reservedRight += width;
|
||||
} else if (item.side === "top") {
|
||||
Object.assign(element.style, {
|
||||
left: px(reservedLeft),
|
||||
right: px(reservedRight),
|
||||
top: px(reservedTop)
|
||||
});
|
||||
|
||||
delete element.style.bottom;
|
||||
|
||||
reservedTop += height;
|
||||
} else if (item.side === "bottom") {
|
||||
Object.assign(element.style, {
|
||||
left: px(reservedLeft),
|
||||
right: px(reservedRight),
|
||||
bottom: px(reservedBottom)
|
||||
});
|
||||
|
||||
delete element.style.top;
|
||||
|
||||
reservedBottom += height;
|
||||
}
|
||||
|
||||
console.log("reserved", reservedLeft, reservedRight, reservedTop, reservedBottom);
|
||||
})
|
||||
|
||||
let item = dockableAPI.fillElement;
|
||||
|
||||
if (item != null) {
|
||||
let element = item.root;
|
||||
|
||||
Object.assign(element.style, {
|
||||
position: "absolute",
|
||||
left: px(reservedLeft),
|
||||
right: px(reservedRight),
|
||||
top: px(reservedTop),
|
||||
bottom: px(reservedBottom)
|
||||
});
|
||||
}
|
||||
|
||||
console.log("ordered stack", orderedStack);
|
||||
}
|
||||
}
|
||||
|
||||
this._uikitDockableContainer = dockableAPI;
|
||||
|
||||
this.on("mount", () => {
|
||||
console.log("dockable-container mounted");
|
||||
if (dockableAPI.isActive()) {
|
||||
dockableAPI.recalculateLayout();
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
@ -1,52 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
const inArray = require("in-array");
|
||||
|
||||
function findContainer(tag) {
|
||||
let lastTag = tag;
|
||||
let dockableContainer;
|
||||
|
||||
while (dockableContainer == null && lastTag != null) {
|
||||
let candidate = lastTag.parent;
|
||||
|
||||
if (candidate != null && candidate._uikitDockableContainer != null && candidate._uikitDockableContainer.isActive()) {
|
||||
dockableContainer = candidate;
|
||||
} else {
|
||||
lastTag = candidate;
|
||||
}
|
||||
}
|
||||
|
||||
if (dockableContainer != null) {
|
||||
return dockableContainer;
|
||||
} else {
|
||||
// FIXME: Better error reporting?
|
||||
throw new Error("Could not find a dockable container for tag");
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
init: function() {
|
||||
if (this.opts.dock != null) {
|
||||
let dockableContainer = findContainer(this);
|
||||
let containerData = dockableContainer._uikitDockableContainer;
|
||||
|
||||
if (inArray(["bottom", "top", "left", "right"], this.opts.dock)) {
|
||||
containerData.stack.push({
|
||||
tag: this,
|
||||
side: this.opts.dock,
|
||||
order: this.opts.dockOrder,
|
||||
widthHint: this.opts.dockWidth,
|
||||
heightHint: this.opts.dockHeight
|
||||
});
|
||||
} else if (this.opts.dock === "fill") {
|
||||
if (containerData.fillElement != null) {
|
||||
throw new Error("There can be only one tag with a `dock` setting of `fill` within a dockable container");
|
||||
} else {
|
||||
containerData.fillElement = this;
|
||||
}
|
||||
} else {
|
||||
throw new Error("Invalid `dock` property; must be one of bottom, top, left, right, fill");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,35 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = function(a, b) {
|
||||
let aOrder, bOrder;
|
||||
|
||||
if (a.order != null) {
|
||||
aOrder = parseInt(a.order);
|
||||
}
|
||||
|
||||
if (b.order != null) {
|
||||
bOrder = parseInt(b.order);
|
||||
}
|
||||
|
||||
if (aOrder != null && bOrder == null) {
|
||||
return -1;
|
||||
} else if (aOrder == null && bOrder != null) {
|
||||
return 1;
|
||||
} else if (aOrder != null && bOrder != null) {
|
||||
if (aOrder < bOrder) {
|
||||
return -1;
|
||||
} else if (aOrder > bOrder) {
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
} else {
|
||||
if (a.stackIndex < b.stackIndex) {
|
||||
return -1;
|
||||
} else if (a.stackIndex > b.stackIndex) {
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,19 +0,0 @@
|
||||
let router = require("express-promise-router")();
|
||||
|
||||
router.get("/", (req, res) => {
|
||||
res.render("layout");
|
||||
});
|
||||
|
||||
router.get("/node/:uuid", (req, res) => {
|
||||
res.json({uuid: req.params.uuid});
|
||||
});
|
||||
|
||||
router.get("/test1", (req, res) => {
|
||||
res.send("test ONE <a href='/test2'>go to 2 instead</a> <a href='/test2' target='_blank'>or in a new window</a>");
|
||||
});
|
||||
|
||||
router.get("/test2", (req, res) => {
|
||||
res.send("test TWO <a href='/test1'>go to 1 instead</a> <a href='/test1' target='_blank'>or in a new window</a>");
|
||||
});
|
||||
|
||||
module.exports = router;
|
@ -1,14 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
require("../../../components/uikit/frame");
|
||||
require("../../../components/uikit/toolbar");
|
||||
require("../../../components/uikit/button");
|
||||
require("../../../components/uikit/form-section");
|
||||
require("../../../components/uikit/input-spawner");
|
||||
require("../../../components/uikit/input");
|
||||
require("../../../components/uikit/textarea");
|
||||
require("../../../components/uikit/autocomplete");
|
||||
|
||||
require("../../../components/window-meta");
|
||||
|
||||
require("./component");
|
@ -1,3 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
require("./component");
|
@ -0,0 +1,14 @@
|
||||
'use strict';
|
||||
|
||||
require("../../../../components/uikit/frame");
|
||||
require("../../../../components/uikit/toolbar");
|
||||
require("../../../../components/uikit/button");
|
||||
require("../../../../components/uikit/form-section");
|
||||
require("../../../../components/uikit/input-spawner");
|
||||
require("../../../../components/uikit/input");
|
||||
require("../../../../components/uikit/textarea");
|
||||
require("../../../../components/uikit/autocomplete");
|
||||
|
||||
require("../../../../components/window-meta");
|
||||
|
||||
require("./component");
|
Loading…
Reference in New Issue