1

I have two separate html files. The first one is the main page.

Main Page

The second one is the properties panel that needs to appear on the right of the canvas of the above page whenever a tool is dropped on the canvas from the toolbox on the left.

enter image description here

I was doing this earlier having the properties panel form as part of the same html page as the mail page( first image).

But since there are going to be various other forms/ property panels, I thought of extracting it to a different html form and calling them to be displayed in this position(right side) from my jsGold.js file.

The file structure is as follows:

File structure

The StreamProperty.html holds the Properties Panel form in the following form

<head>
<link rel="stylesheet" type="text/css" href="../../CSS/style.css">
<link rel="stylesheet" type="text/css" href="../../CSS/propertybox.css">
</head>
<body>

<div style="float: left">
    <h1 class="toolbox-titlex" id="tth">Properties Panel</h1>
    <form class="panel"  id="lot">
        <label>Stream Type:</label>
        <div class="panel-switch">
            <input type="radio" name="TypeGen" value="G" id="type_g" class="panel-switch-input" checked>
            <label for="type_g" class="panel-switch-label">Import</label>
            <input type="radio" name="TypeGen" value="A" id="type_a" class="panel-switch-input">
            <label for="type_a" class="panel-switch-label">Export</label>
            <input type="radio" name="TypeGen" value="B" id="type_b" class="panel-switch-input">
            <label for="type_b" class="panel-switch-label">Temporary</label>
        </div>
        <input type="text" class="panel-input-streamName" placeholder="Stream Name">
        <input type="text" class="panel-input-streamDef" placeholder="Stream Definition">
        <input type="button" value="Save" class="panel-button">
        <input type="reset" value="Reset" class="panel-button-reset">
        <input type="button" value="Cancel" class="panel-button-cancel">
    </form>
</div>
</body>

And I need to display this form through the JavaScript in the following place. Since there is no button click involved, but just a jsPlumb drop, I wasn't sure as how to get this done.

jsGold.js

$("#container").droppable({
      accept: '.project, .query',
      containment: 'container',
      /**
       *
       * @param e --> original event object fired/ normalized by jQuery
       * @param ui --> object that contains additional info added by jQuery depending on which interaction was used
       * @helper clone
       */
      drop: function(e, ui) {
          var dropElem = ui.draggable.attr('class');
          alert('drop element: ' + dropElem);
          droppedElement = ui.helper.clone();
          //jsPlumb doesn't support jQuery cloneUI method.
          //So once the icon is dragged and dropped on the canvas, the clone UI class will be removed
          ui.helper.remove();
          $(droppedElement).removeAttr("class");
          // repaint --> Recompute and position all the connections
          jsPlumb.repaint(ui.helper);
          //Add the 'pro' class which has the same styling as the 'project' class but differs in functionality
          //This avoids the duplication of another project class when one project class is being dragged and dropped
          if (dropElem == "project ui-draggable") {
            var newAgent = $('<div>').attr('id', i).addClass('pro');
            //Reset Property fields
            $("#lot")[0].reset();
            //Display the Properties panel when the element is Clicked
            $(".toolbox-titlex").show();
            $(".panel").show();
          } else {
            var newAgent = $('<div>').attr('id', i).addClass('que');
            alert("que added");
          }

          //Reset Property fields
          $("#lot")[0].reset();

Instead of the following line in the above file I need an alternative to do this

//Display the Properties panel when the element is Clicked
$(".toolbox-titlex").show();
$(".panel").show();
1
  • Does this relate to the jsPlumb functionality or purely sticks to Javascript? Commented Jun 10, 2016 at 8:13

1 Answer 1

1

You can use frame tag to show one html form inside another html

<!DOCTYPE html>
<html>

<frameset cols="100%">
  <frame src="form_a.htm">
</frameset>

</html>
http://quandaflow.com/

Sign up to request clarification or add additional context in comments.

5 Comments

Yes. But how do I display it from within the js file. ?
You can do this by using js script to inject frame tag with data.
In my earlier version, where the property form was within the main page, I used the display: none property in css to hide the properties panel at the beginning and then inside my js file, after dropping the element on the canvas, I called the .show() function to display it. So similar to that, how can I do this with two forms?
I just got this bit as well- $("#includedContent").load("Stream/StreamProperty.html"); This works fine as well
great , nice to hear that

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.