first commit
Change-Id: I8a65ee5527dd16d81e87c8ac5d4bdb471e5e759d
Signed-off-by: lombardof <flombardo@cnit.it>
diff --git a/static/src/utils.js b/static/src/utils.js
new file mode 100644
index 0000000..6d5e820
--- /dev/null
+++ b/static/src/utils.js
@@ -0,0 +1,153 @@
+function generateUID() {
+ return ("0000" + (Math.random() * Math.pow(36, 4) << 0).toString(36)).slice(-4)
+}
+
+function openProject(pId) {
+ window.location.href = '/projects/' + pId;
+}
+
+
+function openDescriptorView(project_id, descriptor_type, descriptor_id) {
+ console.log("openDescriptorView", project_id, descriptor_type, descriptor_id);
+ window.location.href = '/projects/' + project_id + '/descriptors/' + descriptor_type + '/' + descriptor_id;
+
+}
+
+
+function openEditorEvent(e, id) {
+ openEditor(id);
+}
+
+function nodeDragStart(event) {
+ event.dataTransfer.setData("Text", event.target.id);
+}
+
+function savePositions(el) {
+ graph_editor.savePositions();
+}
+
+function buildPalette(args) {
+ $("#paletteContainer").empty();
+ var type_property = graph_editor.getTypeProperty();
+ if (args.length > 0) {
+ args.forEach(function (category) {
+
+ var category_id = "category_" + category.category_name.replace(/[\s.*+?^${}()\/|[\]\\]/g, "_");//.replace(/\s/g, '');
+ var content_id = "palette-content-" + category.category_name.replace(/[\s.*+?^${}()\/|[\]\\]/g, "_");//.replace(/\s/g, '');
+
+ $("#paletteContainer").append('<div id="' + category_id + '" class="palette-category" ><div class="palette-header" onClick="handlePaletteCat(this);" category_id="' + category_id + '"> ' +
+ '<i class="fa fa-chevron-down "></i>' +
+ '<span> ' + category.category_name + '</span>' +
+ '</div>' +
+ '<div id="' + content_id + '" class="palette-content">' +
+
+ '</div>' +
+ '</div>');
+ category.types.forEach(function (type) {
+ console.log(graph_editor.get_name_from_d3_symbol(d3.symbolCircle))
+ var type_id = type.id.replace(/[\s.*+?^${}()|[\]\\]/g, "_");
+ var palette_node_icon;
+ if (type_property[type.id] && type_property[type.id].image && type_property[type.id].image != '') {
+ palette_node_icon = '<div class="palette-node-icon" style="background-image: url(' + (type_property[type.id].image || "") + ')"></div>';
+ }
+ else if (type_property[type.id] && type_property[type.id].shape) {
+ palette_node_icon = buildHtmlShape({
+ shape: type_property[type.id].shape,
+ color: type_property[type.id].color
+ });
+
+ }
+ else {//#1F77B4
+ palette_node_icon = '<div class="palette-node-icon"> <div class="palette-node-square" style="background:#1F77B4;"></div></div>';
+ }
+
+ var html_to_append = '<div class="palette-node ui-draggable" draggable="true" type-name="' + type.id + '" id="' + type_id + '" ondragstart="nodeDragStart(event)">' +
+ '<div class="palette-node-label">' + type.name + '</div>' +
+ '<div class="palette-node-icon-container">' +
+ palette_node_icon +
+ '</div>' +
+ '</div>'
+ $("#" + content_id).append(html_to_append);
+ });
+
+ });
+ }
+ togglePaletteSpinner(true);
+
+
+}
+
+function handlePaletteCat(item) {
+ console.log("handlePaletteContainer")
+ var category_id = $(item).attr("category_id")
+ $('#' + category_id).toggleClass("palette-close");
+
+}
+
+function togglePaletteSpinner(addOrRemove) {
+ $('#palette').toggleClass("palette-status-hidden", addOrRemove);
+}
+
+function showAlert(msg) {
+ // modal_alert_text
+ var alert_msg = ""
+ if (typeof msg == "string")
+ alert_msg = msg
+ else
+ alert_msg = JSON.stringify(msg)
+ $('#modal_alert_text').text(alert_msg);
+ $('#modal_alert').modal('show');
+}
+
+function getUrlParameter(par_name) {
+ var results = new RegExp('[\?&]' + par_name + '=([^&#]*)').exec(window.location.href);
+ if (results == null) {
+ return null;
+ } else {
+ return results[1] || 0;
+ }
+}
+
+function buildHtmlShape(args) {
+ var mySymbol = args.shape;
+ switch (mySymbol) {
+ case d3.symbolCircle:
+ return '<div class="palette-node-icon"> <div class="palette-node-circle" style="background:' + args.color + ';"></div></div>';
+ break;
+ case d3.symbolSquare:
+ return '<div class="palette-node-icon"> <div class="palette-node-square" style="background:' + args.color + ';"></div></div>';
+ break;
+ case d3.symbolDiamond:
+ return '<div class="palette-node-icon" style="background-color:' + args.color + '"></div>';
+ ;
+ break;
+ case d3.symbolTriangle:
+ return '<div class="palette-node-icon"> <div class="palette-node-triangle" style="border-color: transparent transparent ' + args.color + ' transparent;"></div></div>';
+ break;
+ case d3.symbolStar:
+ return '<div class="palette-node-icon" style="background-color:' + args.color + '"></div>';
+ ;
+ break;
+ case d3.symbolCross:
+ return '<div class="palette-node-icon" style="background-color:' + args.color + '"></div>';
+ ;
+ break;
+ default:
+ // if the string is not recognized
+ return "unknown";
+ //return d3.symbolCircleUnknown;
+ }
+
+
+}
+
+if (!String.format) {
+ String.format = function (format) {
+ var args = Array.prototype.slice.call(arguments, 1);
+ return format.replace(/{(\d+)}/g, function (match, number) {
+ return typeof args[number] != 'undefined' ?
+ args[number] :
+ match;
+ });
+ };
+}
\ No newline at end of file