model_building_utils.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. let canvas = "#div_canvas";
  2. function get_element_div(type, num) {
  3. return "#\\2f Formalisms\\2f __LanguageSyntax__\\2f SimpleClassDiagram\\2f SimpleClassDiagram\\2e umlIcons\\2f " + (type) + "\\2f " + (num) + "\\2e instance";
  4. }
  5. function get_class_div(num) {
  6. return get_element_div("ClassIcon", num);
  7. }
  8. function get_assoc_div(num) {
  9. return get_element_div("AssociationLink", num) + " > text:nth-child(1)";
  10. }
  11. function create_classes(client, x_coords, y_coords, curr_num_elements) {
  12. for (let x of x_coords) {
  13. for (let y of y_coords) {
  14. let class_div = this.get_class_div(curr_num_elements);
  15. client
  16. .moveToElement(canvas, x, y)
  17. .mouseButtonClick('right')
  18. .pause(500)
  19. .waitForElementPresent(class_div, 500, "Created class: " + class_div);
  20. curr_num_elements++;
  21. }
  22. }
  23. return curr_num_elements;
  24. }
  25. function set_attribs(client, num, attrs) {
  26. let class_div = this.get_class_div(num);
  27. client.moveToElement(class_div, 10, 10)
  28. .mouseButtonClick('middle')
  29. .waitForElementPresent("#dialog_btn", 1000, "Editing menu opens");
  30. for (const [key, value] of Object.entries(attrs)) {
  31. client
  32. .clearValue(key)
  33. .setValue(key, value);
  34. }
  35. client
  36. .click("#dialog_btn")
  37. .waitForElementNotPresent("#dialog_btn", 1000, "Editing menu closes")
  38. .moveToElement(canvas, 0, 100)
  39. .mouseButtonClick('left')
  40. .pause(500)
  41. ;
  42. }
  43. module.exports = {
  44. '@disabled': true,
  45. get_element_div,
  46. get_assoc_div,
  47. get_class_div,
  48. create_classes,
  49. set_attribs
  50. };