Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- *** MainViewModel.cs ***
- using System;
- using System.Collections.Generic;
- namespace BusinessModelBuilder.Models
- {
- public class MainViewModel
- {
- public MainViewModel()
- {
- }
- public String AppTitle { get; set; }
- public String Login { get; set; }
- public List<CanvasElem> CanvasElemList { get; set; }
- }
- }
- _________________________________________________________________________
- *** CavnasElem.cs ***
- using System;
- using System.Collections.Generic;
- namespace BusinessModelBuilder.Models
- {
- public partial class CanvasElem
- {
- public string Canvaselemcontent { get; set; }
- public int Canvaselemid { get; set; }
- public int? Canvasid { get; set; }
- public string Canvaselemfieldname { get; set; }
- public Canvas Canvas { get; set; }
- }
- }
- ________________________________________________________________________________________________________
- *** BusinessModelCanvas.cshtml ***
- @using Resources = BusinessModelBuilder.App_GlobalResources.Text
- <div id="canvas">
- <div class="grid">
- <div id="key_partners" class="template_field">
- <h4>@Resources.KeyPartners</h4>
- <label id="key_partners_add_new" class="add_new" onclick="addNewLabel(event)">+ @Resources.AddNew</label>
- </div>
- <div id="key_activities" class="template_field">
- <h4>@Resources.KeyActivities</h4>
- <label id="key_activities_add_new" class="add_new" onclick="addNewLabel(event)">+ @Resources.AddNew</label>
- </div>
- <div id="key_resources" class="template_field">
- <h4>@Resources.KeyResources</h4>
- <label id="key_resources_add_new" class="add_new" onclick="addNewLabel(event)">+ @Resources.AddNew</label>
- </div>
- <div id="value_propositions" class="template_field">
- <h4>@Resources.ValuePropositions</h4>
- <label id="value_propositions_add_new" class="add_new" onclick="addNewLabel(event)">+ @Resources.AddNew</label>
- </div>
- <div id="customer_relationships" class="template_field">
- <h4>@Resources.CustomerRelationships</h4>
- <label id="customer_relationships_add_new" class="add_new" onclick="addNewLabel(event)">+ @Resources.AddNew</label>
- </div>
- <div id="channels" class="template_field">
- <h4>@Resources.Channels</h4>
- <label id="channels_add_new" class="add_new" onclick="addNewLabel(event)">+ @Resources.AddNew</label>
- </div>
- <div id="customer_segments" class="template_field">
- <h4>@Resources.CustomerSegments</h4>
- <label id="customer_segments_add_new" class="add_new" onclick="addNewLabel(event)">+ @Resources.AddNew</label>
- </div>
- <div id="bottom_part">
- <div id="cost_structure" class="template_field">
- <h4>@Resources.CostStructure</h4>
- <label id="cost_structure_add_new" class="add_new" onclick="addNewLabel(event)">+ @Resources.AddNew</label>
- </div>
- <div id="revenue_streams" class="template_field">
- <h4>@Resources.RevenueStreams</h4>
- <label id="revenue_streams_add_new" class="add_new" onclick="addNewLabel(event)">+ @Resources.AddNew</label>
- </div>
- </div>
- </div>
- </div>
- <script src="/js/jquery-3.3.1.min.js"></script>
- <script src="/js/signalr.js"></script>
- <script type="text/javascript">
- var chat = new signalR.HubConnectionBuilder().withUrl("/signalr").build();
- var textAreaContainter = [];
- //local functions
- function addNewLabel(event)
- {
- var target = event.target;
- var parent = target.parentElement;
- chat.invoke("NewLabel", "@ViewData["sessionID"]", parent.id);
- }
- function addNewLabelLocal(textareaid, parent, what)
- {
- var newLabel = document.createElement("div");
- newLabel.className = "label";
- newLabel.setAttribute("draggable", "true");
- var newTextArea = document.createElement("textarea");
- newTextArea.id = textareaid;
- newTextArea.placeholder = "@Resources.NewLabelPlaceholder";
- newTextArea.innerText = what;
- $(newTextArea).on('input', function (e)
- {
- this.setAttribute("changed", "true");
- });
- $(newTextArea).focus(function ()
- {
- //chat.server.lockTextArea("@ViewData["sessionID"]", $(this).attr('id'));
- chat.invoke("lockTextArea", "@ViewData["sessionID"]", $(this).attr('id'));
- });
- $(newTextArea).focusout(function ()
- {
- if ($(this).attr("changed") === "true")
- {
- //chat.server.labelEdited("@ViewData["sessionID"]", $(this).attr('id'), $(this).val());
- chat.invoke("labelEdited", "@ViewData["sessionID"]", $(this).attr('id'), $(this).val());
- $(this).attr("changed", "false");
- }
- //chat.server.unlockTextArea("@ViewData["sessionID"]", $(this).attr('id'));
- chat.invoke("unlockTextArea", "@ViewData["sessionID"]", $(this).attr('id'));
- });
- var removeButton = document.createElement("div");
- removeButton.classList.add("remove_button");
- removeButton.classList.add("remove_button_invisible");
- $(removeButton).click(function ()
- {
- //chat.server.remove("@ViewData["sessionID"]", $(newTextArea).attr('id'));
- chat.invoke("remove", "@ViewData["sessionID"]", $(newTextArea).attr('id'));
- });
- $(newLabel)
- .mouseenter(function() {
- removeButton.classList.toggle("remove_button_invisible");
- })
- .mouseleave(function() {
- removeButton.classList.toggle("remove_button_invisible");
- });
- textAreaContainter.push(newTextArea);
- newLabel.appendChild(newTextArea);
- newLabel.appendChild(removeButton);
- parent.insertBefore(newLabel, parent.lastElementChild);
- parent.scrollTop = parent.scrollHeight - parent.clientHeight;
- //tą funkcję, szczególnie textAreaContainer raczej trzeba będzie napisać od nowa
- setFocus();
- }
- function setFocus() {
- for (i = 0; i < textAreaContainter.length; i++) {
- textAreaContainter[i].blur();
- }
- var lastElement = textAreaContainter.length - 1;
- textAreaContainter[lastElement].focus();
- }
- $("#canvas_name").on('input', function (e)
- {
- //chat.server.newProjectTitle("@ViewData["sessionID"]", $(this).val());
- chat.invoke("newProjectTitle", "@ViewData["sessionID"]", $(this).val());
- });
- //network event handlers
- chat.on("addNewLabel",
- function(textareaid, where, what) {
- var parent = document.getElementById(where);
- addNewLabelLocal(textareaid, parent, what);
- }
- );
- chat.on("updateTextArea",
- function(textareaid, newtext) {
- $("#" + textareaid).val(newtext);
- }
- );
- chat.on("lockTextArea",
- function(textareaid) {
- $("#" + textareaid).attr("readonly");
- }
- );
- chat.on("unlockTextArea",
- function(textareaid) {
- $("#" + textareaid).removeAttr("readonly");
- }
- );
- chat.on("remove",
- function(textareaid) {
- $("#" + textareaid).parent().remove();
- }
- );
- chat.on("setProjectTitle",
- function(title) {
- $("#canvas_name").val(title);
- }
- );
- chat.start().catch(function(err) {
- return console.error(err.toString());
- });
- $(function () {
- //to jest oczywiście słabe, bo może się w ciągu zadanego czasu nie połączyć
- setTimeout(function joinGroup() {
- chat.invoke("JoinGroup", "@ViewData["sessionID"]");
- }, 500);
- @foreach (var x in Model.CanvasElemList)
- {
- <text>
- addNewLabelLocal(@x.Canvaselemid, document.getElementById("@x.Canvaselemfieldname"), "@x.Canvaselemcontent");
- </text>
- }
- });
- </script>
- _________________________________________________________________________________________________________________________________
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement