Интеграция OpenJSCAD в MediaWiki - PullRequest
2 голосов
/ 10 июня 2019

Текущие решения, которые я знаю для отображения JSCad Designs:

всем нужна достаточно инфраструктуры для работы.

https://www.openjscad.org/
основан на узле Userguide

https://www.openjscad.org/dokuwiki/doku.php?id=user_guide_website состояния

Сайт может быть интегрирован в существующий сайт.

Но не говорит как.

https://danmarshall.github.io/jscad-gallery/

Имеет источники в https://github.com/danmarshall/jscad-gallery. Они были в последний раз изменены в 2017 году (около 2 лет назад на этот пост). Он использует несколько десятков файлов javascript и jekyll, чтобы выполнить свою задачу.

Пример: https://danmarshall.github.io/jscad-gallery/s-hook

Исходный код страницы довольно мал:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>JSCAD Gallery s-hook</title>
    <link rel="stylesheet" type="text/css" href="/jscad-gallery/site.css"/>
    <script src='/jscad-gallery/browser_modules/@jscad/csg/0.3.7.js' type="text/javascript"></script>
    <script src='/jscad-gallery/js/jscad-viewer.js' type="text/javascript"></script>
    <script src='/jscad-gallery/js/ui.js' type="text/javascript"></script></head>
<body>
    <h1>s-hook</h1>

<p>a simple S-hook design</p>


<div id="detail-viewer"></div>

<div id="inputs"></div>

<button onclick="detailView.export('stl', document.getElementById('download'))">Generate STL</button>
<div id="download"></div>

<script>

    var design = {
        title: "s-hook",
        updated: null,
        author: "Joost Nieuwenhuijse",
        version: "1.0.0",
        dependencies: [{"@jscad/scad-api":"^0.4.2"}],
        image: "/browser_modules/s-hook/thumbnail.png",
        camera: {"angle":{"x":-60,"y":0,"z":-45},"position":{"x":0,"y":0,"z":116}}
    };

    var detailView = new JscadGallery.DesignView();
    detailView.load(document.getElementById('detail-viewer'), design, document.getElementById('inputs'));

</script>


    <footer>
        <a href="https://github.com/danmarshall/jscad-gallery">Jscad-gallery on GitHub</a>
    </footer>
</body>
</html>

Я ищу (надеюсь) простое решение, которое можно встроить в Mediawiki. Для начала мне подойдет простая HTML-страница с небольшим количеством javascript.

см. Также:

https://openjscad.nodebb.com/topic/98/displaying-jscad-designs-in-media-wiki-or-plain-html-for-a-start

Для начала я создал http://wiki.bitplan.com/index.php/ParametricLampShade, просто скопировав html из https://risacher.org/OpenJsCad/lampshadedemo.html.

Я положил файлы:

  1. csg.js
  2. lightgl.js
  3. openjscad.js

в папку extensions / OpenJsCad.

При таком упрощенном подходе я получаю ошибку:

Error in line 466: NetworkError: Failed to load worker script at http://wiki.bitplan.com/index.php/csg.js (nsresult = 0x804b001d)

Кажется, причины в openjscad.js:

// callback: should be function(error, csg)
OpenJsCad.parseJsCadScriptASync = function(script, mainParameters, options, callback) {
  var baselibraries = [
    "csg.js",
    "openjscad.js"
  ];

  var baseurl = document.location.href.replace(/\?.*$/, '');
  var openjscadurl = baseurl;
  if (options['openJsCadPath'] != null) {
    openjscadurl = OpenJsCad.makeAbsoluteUrl( options['openJsCadPath'], baseurl );
  }

  var libraries = [];
  if (options['libraries'] != null) {
    libraries = options['libraries'];
  }
  ...
}

openjscadurl берется из базового пути, который для Mediawiki - ../index.php.

Как я могу это исправить?

Какой минимальный набор файлов javascript необходим и будут правильными версиями этих файлов?

Ответы [ 2 ]

2 голосов
/ 12 июня 2019

Версия https://www.npmjs.com/package/@jscad/web версии 1.10.0 позволяет размещать файл JsCad с одним пакетом.https://github.com/jscad/OpenJSCAD.org/pull/413

Хотя это не поможет вам напрямую, у меня есть компонент Vue, который позволяет отображать файл JsCad на https://gitlab.com/johnwebbcole/vue-openjscad

. Возможно, вы сможете использовать его для обновленияваш плагин Mediawiki.

J

1 голос
/ 10 июня 2019

Изменение расчета baseurl на:

  //alert(document.location);
  var baseurl = document.location.href.replace(/index.php\/.*$/, 'extensions/OpenJsCad/');
  //alert(baseurl);

исправил проблему.

См. http://wiki.bitplan.com/index.php/ParametricLampShade для результата.

как доказательство концепции

http://wiki.bitplan.com/index.php/Template:Jscad теперь имеет шаблон Mediawiki.

Я все еще хотел бы узнать о файлах javascript и версиях, которые следует использовать. Поскольку текущий подход использует некоторые устаревшие файлы javascript и даже не может отобразить код логотипа OpenJSCAD из http://openjscad.org

...