Как включить двойной щелчок, чтобы отобразить переопределение диалога на GeoGebra - PullRequest
0 голосов
/ 27 ноября 2018

Hello stackOverflow Community

Мне нужно показать диалоговое окно переопределения при двойном щелчке и настроить пользовательские параметры.

Проблема в том, что когда я не устанавливаю пользовательские параметры, диалоговое окно переопределения этоотображается успешно при двойном щелчке, но мне нужно показать Geogebra с пользовательскими параметрами.

The redefine dialog

Escenario работает без пользовательских параметров

HTML

<div id="ggb-element"></div>

JavaScript

var width = window.innerWidth;
var height = window.innerHeight;
var ggbApp = new GGBApplet({
  "id": "ggbGraph",
  "appName": "graphing",
  "width": width,
  "height": height,
  "showToolBar": true,
  "showAlgebraInput": true,
  "showMenuBar": true,
  "appletOnLoad": afterLoad,
}, true);
window.addEventListener("load", function () {
  ggbApp.inject('ggb-element');
});

function afterLoad() {

  let app = window['ggbGraph'];

  let points = [{
    x: 0,
    y: 0
  }, {
    x: 1,
    y: 1
  }, {
    x: 2,
    y: 4
  }, {
    x: 4,
    y: 16
  }];

  points.forEach(function(p){
    app.evalCommandGetLabels(`(${p.x},${p.y})`)[0];
  });

};

Сценарий работы с пользовательскими параметрами

HTML

<div id="ggb-element"></div>

JavaScript

var width = window.innerWidth;
var height = window.innerHeight;
var ggbApp = new GGBApplet({
  "id": "ggbGraph",
  "perspective": "G",
  "width": width,
  "height": height,
  "showToolBar": false,
  "customToolBar": " ",
  "showAlgebraInput": false,
  "language": "en",
  "showResetIcon": false,
  "showLogging": false,
  "showMenuBar": false,
  "enableRightClick": false,
  "preventFocus": false,
  "errorDialogsActive": false,
  "showToolBarHelp": false,
  "enableLabelDrags": false,
  "useBrowserForJS": true,
  "appletOnLoad": afterLoad,
}, true);
window.addEventListener("load", function () {
  ggbApp.inject('ggb-element');
});

function afterLoad() {

  let app = window['ggbGraph'];

  let points = [{
    x: 0,
    y: 0
  }, {
    x: 1,
    y: 1
  }, {
    x: 2,
    y: 4
  }, {
    x: 4,
    y: 16
  }];

  points.forEach(function(p){
    app.evalCommandGetLabels(`(${p.x},${p.y})`)[0];
  });

};

ОТВЕТ

Для шоудиалоговое окно переопределения при двойном щелчке мыши и пользовательских настройках. Необходимо добавить параметр showMenuBar: false и удалить ненужные кнопки с помощью JavaScript.

Рабочая демонстрация

HTML

<div id="ggb-element"></div>

JavaScript

var width = window.innerWidth;
var height = window.innerHeight;

var parameters = {
  "id": "ggbGraph",
  "perspective": "G",
  "width": width,
  "height": height,
  "showToolBar": true,
  "customToolBar": " 0 1 ",
  "borderColor": null,
  "showMenuBar": true,
  "allowStyleBar": false,
  "showAlgebraInput": true,
  "enableLabelDrags": true,
  "enableShiftDragZoom": true,
  "capturingThreshold": null,
  "showToolBarHelp": false,
  "errorDialogsActive": true,
  "showTutorialLink": false,
  "showLogging": false,
  "useBrowserForJS": true,
  "appletOnLoad": afterLoad,
};

var ggbApp = new GGBApplet(parameters, true);

window.addEventListener("load", function () {
  ggbApp.inject('ggb-element');
});

function afterLoad() {

  let app = window['ggbGraph'];

  removeMenuButtons();
  preparePropertiesView();

  app.setGridVisible(true);
  app.enableShiftDragZoom(true);

  let points = [{
    x: 0,
    y: 0
  }, {
    x: 1,
    y: 1
  }, {
    x: 2,
    y: 4
  }, {
    x: 4,
    y: 16
  }];

  points.forEach(function(p){
    app.evalCommandGetLabels(`(${p.x},${p.y})`)[0];
  });

};

function removeMenuButtons(){
  $('#ggb-element').find('.toolbarPanel').find('.rightButtonPanel').find('.button[tabindex="-1"]').remove();
  $('#ggb-element').find('.gwt-SplitLayoutPanel').find('.TitleBarPanel').remove();
}

function preparePropertiesView(){
  $('#ggb-element').find('.gwt-SplitLayoutPanel').find('.ggbdockpanelhack').find('.PropertiesViewW').find('.contentsPanel').css('width', '300px');
}
...