@things-factory/board-ui 7.0.1-rc.9 → 7.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client/board-list/board-tile-list.ts +2 -2
- package/client/themes/board-theme.css +3 -2
- package/client/viewparts/board-basic-info.ts +1 -1
- package/client/viewparts/board-template-builder.ts +1 -1
- package/client/viewparts/board-versions.ts +2 -2
- package/client/viewparts/group-info-basic.ts +21 -24
- package/client/viewparts/group-info-import.ts +6 -6
- package/client/viewparts/link-builder.ts +2 -2
- package/client/viewparts/play-group-info-basic.ts +23 -17
- package/client/viewparts/play-group-info-link.ts +1 -1
- package/dist-client/board-list/board-tile-list.js +2 -2
- package/dist-client/board-list/board-tile-list.js.map +1 -1
- package/dist-client/themes/board-theme.css +3 -2
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-client/viewparts/board-basic-info.js +1 -1
- package/dist-client/viewparts/board-basic-info.js.map +1 -1
- package/dist-client/viewparts/board-template-builder.js +1 -1
- package/dist-client/viewparts/board-template-builder.js.map +1 -1
- package/dist-client/viewparts/board-versions.js +2 -2
- package/dist-client/viewparts/board-versions.js.map +1 -1
- package/dist-client/viewparts/group-info-basic.js +21 -24
- package/dist-client/viewparts/group-info-basic.js.map +1 -1
- package/dist-client/viewparts/group-info-import.js +6 -6
- package/dist-client/viewparts/group-info-import.js.map +1 -1
- package/dist-client/viewparts/link-builder.js +2 -2
- package/dist-client/viewparts/link-builder.js.map +1 -1
- package/dist-client/viewparts/play-group-info-basic.js +23 -17
- package/dist-client/viewparts/play-group-info-basic.js.map +1 -1
- package/dist-client/viewparts/play-group-info-link.js +1 -1
- package/dist-client/viewparts/play-group-info-link.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/helps/board-modeller/shapes/text-box.ko.md +9 -0
- package/helps/board-modeller/shapes/text-box.md +10 -0
- package/helps/board-modeller/shapes/text-box.zh.md +9 -0
- package/package.json +19 -19
- package/translations/en.json +1 -0
- package/translations/ja.json +1 -0
- package/translations/ko.json +1 -0
- package/translations/ms.json +1 -0
- package/translations/zh.json +1 -0
- package/client/board-list/board-importer.ts +0 -138
- package/dist-client/board-list/board-importer.d.ts +0 -6
- package/dist-client/board-list/board-importer.js +0 -112
- package/dist-client/board-list/board-importer.js.map +0 -1
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import '@operato/board/ox-board-viewer.js'
|
|
2
|
-
|
|
3
|
-
import { BoardViewer } from '@operato/board/ox-board-viewer.js'
|
|
4
|
-
|
|
5
|
-
function setHighlightStyle(dropArea) {
|
|
6
|
-
var style = document.createElement('style')
|
|
7
|
-
|
|
8
|
-
style.type = 'text/css'
|
|
9
|
-
style.innerHTML = `.highlight_me {
|
|
10
|
-
background: orange;
|
|
11
|
-
cursor: pointer;
|
|
12
|
-
}`
|
|
13
|
-
|
|
14
|
-
dropArea.appendChild(style)
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export default class BoardImporter {
|
|
18
|
-
static import(file, importer) {
|
|
19
|
-
let reader = new FileReader()
|
|
20
|
-
reader.readAsText(file)
|
|
21
|
-
reader.onloadend = () => {
|
|
22
|
-
try {
|
|
23
|
-
let model = JSON.parse(reader.result as any)
|
|
24
|
-
importer(file.name.replace(/\.[^/.]+$/, ''), model)
|
|
25
|
-
} catch (e) {
|
|
26
|
-
console.error('board import failed', e)
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
static preview(file) {
|
|
32
|
-
let reader = new FileReader()
|
|
33
|
-
reader.readAsText(file)
|
|
34
|
-
reader.onloadend = () => {
|
|
35
|
-
try {
|
|
36
|
-
let previewModel = JSON.parse(reader.result as any)
|
|
37
|
-
|
|
38
|
-
var preview = document.createElement('ox-board-viewer') as BoardViewer
|
|
39
|
-
|
|
40
|
-
preview.style.width = '100%'
|
|
41
|
-
preview.style.height = '80%'
|
|
42
|
-
preview.style.margin = '0'
|
|
43
|
-
preview.style.padding = '0'
|
|
44
|
-
|
|
45
|
-
// TODO how to hand over model to previewer
|
|
46
|
-
// preview.model = previewModel
|
|
47
|
-
// preview.provider = provider;
|
|
48
|
-
|
|
49
|
-
var buttons = document.createElement('div')
|
|
50
|
-
|
|
51
|
-
buttons.className = 'buttons'
|
|
52
|
-
buttons.innerHTML = `
|
|
53
|
-
<paper-button dialog-dismiss>Cancel</paper-button>
|
|
54
|
-
<paper-button dialog-confirm autofocus>Accept</paper-button>
|
|
55
|
-
`
|
|
56
|
-
|
|
57
|
-
var dialog = document.createElement('paper-dialog')
|
|
58
|
-
|
|
59
|
-
dialog.style.width = '100%'
|
|
60
|
-
dialog.style.height = '100%'
|
|
61
|
-
dialog.setAttribute('with-backdrop', 'true')
|
|
62
|
-
dialog.setAttribute('auto-fit-on-attach', 'true')
|
|
63
|
-
dialog.setAttribute('always-on-top', 'true')
|
|
64
|
-
dialog.addEventListener('iron-overlay-closed', () => {
|
|
65
|
-
dialog.parentNode!.removeChild(dialog)
|
|
66
|
-
})
|
|
67
|
-
|
|
68
|
-
dialog.appendChild(preview)
|
|
69
|
-
dialog.appendChild(buttons)
|
|
70
|
-
document.body.appendChild(dialog)
|
|
71
|
-
|
|
72
|
-
requestAnimationFrame(() => {
|
|
73
|
-
;(dialog as any).open()
|
|
74
|
-
})
|
|
75
|
-
} catch (e) {
|
|
76
|
-
console.error('board preview failed', e)
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
// let url = 'YOUR URL HERE'
|
|
80
|
-
// let formData = new FormData()
|
|
81
|
-
|
|
82
|
-
// formData.append('file', file)
|
|
83
|
-
|
|
84
|
-
// fetch(url, {
|
|
85
|
-
// method: 'POST',
|
|
86
|
-
// body: formData
|
|
87
|
-
// })
|
|
88
|
-
// .then(() => { /* Done. Inform the user */ })
|
|
89
|
-
// .catch(() => { /* Error. Inform the user */ })
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
static set(dropArea, judge, importer) {
|
|
93
|
-
setHighlightStyle(dropArea)
|
|
94
|
-
|
|
95
|
-
var preventDefaults = e => {
|
|
96
|
-
if (!judge || judge()) {
|
|
97
|
-
e.preventDefault()
|
|
98
|
-
e.stopPropagation()
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
var highlight = e => {
|
|
103
|
-
if (!judge || judge()) {
|
|
104
|
-
dropArea.classList.add('highlight_me')
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
var unhighlight = e => {
|
|
109
|
-
if (!judge || judge()) {
|
|
110
|
-
dropArea.classList.remove('highlight_me')
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
;['dragenter', 'dragover', 'dragleave', 'drop'].forEach(event => {
|
|
115
|
-
dropArea.addEventListener(event, preventDefaults, false)
|
|
116
|
-
})
|
|
117
|
-
;['dragenter', 'dragover'].forEach(event => {
|
|
118
|
-
dropArea.addEventListener(event, highlight, false)
|
|
119
|
-
})
|
|
120
|
-
;['dragleave', 'drop'].forEach(event => {
|
|
121
|
-
dropArea.addEventListener(event, unhighlight, false)
|
|
122
|
-
})
|
|
123
|
-
|
|
124
|
-
dropArea.addEventListener(
|
|
125
|
-
'drop',
|
|
126
|
-
e => {
|
|
127
|
-
if (!judge || judge()) {
|
|
128
|
-
let dt = e.dataTransfer
|
|
129
|
-
let files = dt.files
|
|
130
|
-
|
|
131
|
-
// [...files].forEach((file) => BoardImporter.preview(file))
|
|
132
|
-
;[...files].forEach(file => BoardImporter.import(file, importer))
|
|
133
|
-
}
|
|
134
|
-
},
|
|
135
|
-
false
|
|
136
|
-
)
|
|
137
|
-
}
|
|
138
|
-
}
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import '@operato/board/ox-board-viewer.js';
|
|
2
|
-
function setHighlightStyle(dropArea) {
|
|
3
|
-
var style = document.createElement('style');
|
|
4
|
-
style.type = 'text/css';
|
|
5
|
-
style.innerHTML = `.highlight_me {
|
|
6
|
-
background: orange;
|
|
7
|
-
cursor: pointer;
|
|
8
|
-
}`;
|
|
9
|
-
dropArea.appendChild(style);
|
|
10
|
-
}
|
|
11
|
-
export default class BoardImporter {
|
|
12
|
-
static import(file, importer) {
|
|
13
|
-
let reader = new FileReader();
|
|
14
|
-
reader.readAsText(file);
|
|
15
|
-
reader.onloadend = () => {
|
|
16
|
-
try {
|
|
17
|
-
let model = JSON.parse(reader.result);
|
|
18
|
-
importer(file.name.replace(/\.[^/.]+$/, ''), model);
|
|
19
|
-
}
|
|
20
|
-
catch (e) {
|
|
21
|
-
console.error('board import failed', e);
|
|
22
|
-
}
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
static preview(file) {
|
|
26
|
-
let reader = new FileReader();
|
|
27
|
-
reader.readAsText(file);
|
|
28
|
-
reader.onloadend = () => {
|
|
29
|
-
try {
|
|
30
|
-
let previewModel = JSON.parse(reader.result);
|
|
31
|
-
var preview = document.createElement('ox-board-viewer');
|
|
32
|
-
preview.style.width = '100%';
|
|
33
|
-
preview.style.height = '80%';
|
|
34
|
-
preview.style.margin = '0';
|
|
35
|
-
preview.style.padding = '0';
|
|
36
|
-
// TODO how to hand over model to previewer
|
|
37
|
-
// preview.model = previewModel
|
|
38
|
-
// preview.provider = provider;
|
|
39
|
-
var buttons = document.createElement('div');
|
|
40
|
-
buttons.className = 'buttons';
|
|
41
|
-
buttons.innerHTML = `
|
|
42
|
-
<paper-button dialog-dismiss>Cancel</paper-button>
|
|
43
|
-
<paper-button dialog-confirm autofocus>Accept</paper-button>
|
|
44
|
-
`;
|
|
45
|
-
var dialog = document.createElement('paper-dialog');
|
|
46
|
-
dialog.style.width = '100%';
|
|
47
|
-
dialog.style.height = '100%';
|
|
48
|
-
dialog.setAttribute('with-backdrop', 'true');
|
|
49
|
-
dialog.setAttribute('auto-fit-on-attach', 'true');
|
|
50
|
-
dialog.setAttribute('always-on-top', 'true');
|
|
51
|
-
dialog.addEventListener('iron-overlay-closed', () => {
|
|
52
|
-
dialog.parentNode.removeChild(dialog);
|
|
53
|
-
});
|
|
54
|
-
dialog.appendChild(preview);
|
|
55
|
-
dialog.appendChild(buttons);
|
|
56
|
-
document.body.appendChild(dialog);
|
|
57
|
-
requestAnimationFrame(() => {
|
|
58
|
-
;
|
|
59
|
-
dialog.open();
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
catch (e) {
|
|
63
|
-
console.error('board preview failed', e);
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
// let url = 'YOUR URL HERE'
|
|
67
|
-
// let formData = new FormData()
|
|
68
|
-
// formData.append('file', file)
|
|
69
|
-
// fetch(url, {
|
|
70
|
-
// method: 'POST',
|
|
71
|
-
// body: formData
|
|
72
|
-
// })
|
|
73
|
-
// .then(() => { /* Done. Inform the user */ })
|
|
74
|
-
// .catch(() => { /* Error. Inform the user */ })
|
|
75
|
-
}
|
|
76
|
-
static set(dropArea, judge, importer) {
|
|
77
|
-
setHighlightStyle(dropArea);
|
|
78
|
-
var preventDefaults = e => {
|
|
79
|
-
if (!judge || judge()) {
|
|
80
|
-
e.preventDefault();
|
|
81
|
-
e.stopPropagation();
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
|
-
var highlight = e => {
|
|
85
|
-
if (!judge || judge()) {
|
|
86
|
-
dropArea.classList.add('highlight_me');
|
|
87
|
-
}
|
|
88
|
-
};
|
|
89
|
-
var unhighlight = e => {
|
|
90
|
-
if (!judge || judge()) {
|
|
91
|
-
dropArea.classList.remove('highlight_me');
|
|
92
|
-
}
|
|
93
|
-
};
|
|
94
|
-
['dragenter', 'dragover', 'dragleave', 'drop'].forEach(event => {
|
|
95
|
-
dropArea.addEventListener(event, preventDefaults, false);
|
|
96
|
-
});
|
|
97
|
-
['dragenter', 'dragover'].forEach(event => {
|
|
98
|
-
dropArea.addEventListener(event, highlight, false);
|
|
99
|
-
});
|
|
100
|
-
['dragleave', 'drop'].forEach(event => {
|
|
101
|
-
dropArea.addEventListener(event, unhighlight, false);
|
|
102
|
-
});
|
|
103
|
-
dropArea.addEventListener('drop', e => {
|
|
104
|
-
if (!judge || judge()) {
|
|
105
|
-
let dt = e.dataTransfer;
|
|
106
|
-
let files = dt.files;
|
|
107
|
-
[...files].forEach(file => BoardImporter.import(file, importer));
|
|
108
|
-
}
|
|
109
|
-
}, false);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
//# sourceMappingURL=board-importer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"board-importer.js","sourceRoot":"","sources":["../../client/board-list/board-importer.ts"],"names":[],"mappings":"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","sourcesContent":["import '@operato/board/ox-board-viewer.js'\n\nimport { BoardViewer } from '@operato/board/ox-board-viewer.js'\n\nfunction setHighlightStyle(dropArea) {\n var style = document.createElement('style')\n\n style.type = 'text/css'\n style.innerHTML = `.highlight_me {\n background: orange;\n cursor: pointer;\n }`\n\n dropArea.appendChild(style)\n}\n\nexport default class BoardImporter {\n static import(file, importer) {\n let reader = new FileReader()\n reader.readAsText(file)\n reader.onloadend = () => {\n try {\n let model = JSON.parse(reader.result as any)\n importer(file.name.replace(/\\.[^/.]+$/, ''), model)\n } catch (e) {\n console.error('board import failed', e)\n }\n }\n }\n\n static preview(file) {\n let reader = new FileReader()\n reader.readAsText(file)\n reader.onloadend = () => {\n try {\n let previewModel = JSON.parse(reader.result as any)\n\n var preview = document.createElement('ox-board-viewer') as BoardViewer\n\n preview.style.width = '100%'\n preview.style.height = '80%'\n preview.style.margin = '0'\n preview.style.padding = '0'\n\n // TODO how to hand over model to previewer\n // preview.model = previewModel\n // preview.provider = provider;\n\n var buttons = document.createElement('div')\n\n buttons.className = 'buttons'\n buttons.innerHTML = `\n <paper-button dialog-dismiss>Cancel</paper-button>\n <paper-button dialog-confirm autofocus>Accept</paper-button>\n `\n\n var dialog = document.createElement('paper-dialog')\n\n dialog.style.width = '100%'\n dialog.style.height = '100%'\n dialog.setAttribute('with-backdrop', 'true')\n dialog.setAttribute('auto-fit-on-attach', 'true')\n dialog.setAttribute('always-on-top', 'true')\n dialog.addEventListener('iron-overlay-closed', () => {\n dialog.parentNode!.removeChild(dialog)\n })\n\n dialog.appendChild(preview)\n dialog.appendChild(buttons)\n document.body.appendChild(dialog)\n\n requestAnimationFrame(() => {\n ;(dialog as any).open()\n })\n } catch (e) {\n console.error('board preview failed', e)\n }\n }\n // let url = 'YOUR URL HERE'\n // let formData = new FormData()\n\n // formData.append('file', file)\n\n // fetch(url, {\n // method: 'POST',\n // body: formData\n // })\n // .then(() => { /* Done. Inform the user */ })\n // .catch(() => { /* Error. Inform the user */ })\n }\n\n static set(dropArea, judge, importer) {\n setHighlightStyle(dropArea)\n\n var preventDefaults = e => {\n if (!judge || judge()) {\n e.preventDefault()\n e.stopPropagation()\n }\n }\n\n var highlight = e => {\n if (!judge || judge()) {\n dropArea.classList.add('highlight_me')\n }\n }\n\n var unhighlight = e => {\n if (!judge || judge()) {\n dropArea.classList.remove('highlight_me')\n }\n }\n\n ;['dragenter', 'dragover', 'dragleave', 'drop'].forEach(event => {\n dropArea.addEventListener(event, preventDefaults, false)\n })\n ;['dragenter', 'dragover'].forEach(event => {\n dropArea.addEventListener(event, highlight, false)\n })\n ;['dragleave', 'drop'].forEach(event => {\n dropArea.addEventListener(event, unhighlight, false)\n })\n\n dropArea.addEventListener(\n 'drop',\n e => {\n if (!judge || judge()) {\n let dt = e.dataTransfer\n let files = dt.files\n\n // [...files].forEach((file) => BoardImporter.preview(file))\n ;[...files].forEach(file => BoardImporter.import(file, importer))\n }\n },\n false\n )\n }\n}\n"]}
|