mirror of
https://github.com/documize/community.git
synced 2025-07-22 22:59:43 +02:00
Draw.io integration WIP
This commit is contained in:
parent
2b8a7921ad
commit
d746c90624
16 changed files with 955 additions and 14 deletions
54
domain/section/flowchart/flowchart.go
Normal file
54
domain/section/flowchart/flowchart.go
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
|
||||||
|
//
|
||||||
|
// This software (Documize Community Edition) is licensed under
|
||||||
|
// GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html
|
||||||
|
//
|
||||||
|
// You can operate outside the AGPL restrictions by purchasing
|
||||||
|
// Documize Enterprise Edition and obtaining a commercial license
|
||||||
|
// by contacting <sales@documize.com>.
|
||||||
|
//
|
||||||
|
// https://documize.com
|
||||||
|
|
||||||
|
package flowchart
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/documize/community/core/env"
|
||||||
|
"github.com/documize/community/domain"
|
||||||
|
"github.com/documize/community/domain/section/provider"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Provider represents Draw.io
|
||||||
|
type Provider struct {
|
||||||
|
Runtime *env.Runtime
|
||||||
|
Store *domain.Store
|
||||||
|
}
|
||||||
|
|
||||||
|
// Meta describes us
|
||||||
|
func (*Provider) Meta() provider.TypeMeta {
|
||||||
|
section := provider.TypeMeta{}
|
||||||
|
|
||||||
|
section.ID = "d46a18f6-49fb-11e8-842f-0ed5f89f718b"
|
||||||
|
section.Title = "Graphical Diagram"
|
||||||
|
section.Description = "Draw.io powered flowcharts and diagrams"
|
||||||
|
section.ContentType = "flowchart"
|
||||||
|
section.PageType = "tab"
|
||||||
|
section.Order = 9991
|
||||||
|
|
||||||
|
return section
|
||||||
|
}
|
||||||
|
|
||||||
|
// Command stub.
|
||||||
|
func (p *Provider) Command(ctx *provider.Context, w http.ResponseWriter, r *http.Request) {
|
||||||
|
}
|
||||||
|
|
||||||
|
// Render returns data as-is (HTML).
|
||||||
|
func (p *Provider) Render(ctx *provider.Context, config, data string) string {
|
||||||
|
return data
|
||||||
|
}
|
||||||
|
|
||||||
|
// Refresh just sends back data as-is.
|
||||||
|
func (*Provider) Refresh(ctx *provider.Context, config, data string) string {
|
||||||
|
return data
|
||||||
|
}
|
|
@ -25,7 +25,7 @@ import (
|
||||||
"github.com/documize/community/domain/section/provider"
|
"github.com/documize/community/domain/section/provider"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Provider represents Mermaid Diagram
|
// Provider represents PlantUML Text Diagram
|
||||||
type Provider struct {
|
type Provider struct {
|
||||||
Runtime *env.Runtime
|
Runtime *env.Runtime
|
||||||
Store *domain.Store
|
Store *domain.Store
|
||||||
|
|
|
@ -18,6 +18,7 @@ import (
|
||||||
"github.com/documize/community/domain"
|
"github.com/documize/community/domain"
|
||||||
"github.com/documize/community/domain/section/airtable"
|
"github.com/documize/community/domain/section/airtable"
|
||||||
"github.com/documize/community/domain/section/code"
|
"github.com/documize/community/domain/section/code"
|
||||||
|
"github.com/documize/community/domain/section/flowchart"
|
||||||
"github.com/documize/community/domain/section/gemini"
|
"github.com/documize/community/domain/section/gemini"
|
||||||
"github.com/documize/community/domain/section/markdown"
|
"github.com/documize/community/domain/section/markdown"
|
||||||
"github.com/documize/community/domain/section/papertrail"
|
"github.com/documize/community/domain/section/papertrail"
|
||||||
|
@ -41,6 +42,7 @@ func Register(rt *env.Runtime, s *domain.Store) {
|
||||||
provider.Register("wysiwyg", &wysiwyg.Provider{Runtime: rt, Store: s})
|
provider.Register("wysiwyg", &wysiwyg.Provider{Runtime: rt, Store: s})
|
||||||
provider.Register("airtable", &airtable.Provider{Runtime: rt, Store: s})
|
provider.Register("airtable", &airtable.Provider{Runtime: rt, Store: s})
|
||||||
provider.Register("plantuml", &plantuml.Provider{Runtime: rt, Store: s})
|
provider.Register("plantuml", &plantuml.Provider{Runtime: rt, Store: s})
|
||||||
|
provider.Register("flowchart", &flowchart.Provider{Runtime: rt, Store: s})
|
||||||
|
|
||||||
p := provider.List()
|
p := provider.List()
|
||||||
rt.Log.Info(fmt.Sprintf("Registered %d sections", len(p)))
|
rt.Log.Info(fmt.Sprintf("Registered %d sections", len(p)))
|
||||||
|
|
BIN
gui/app/components/section/flowchart/embed.pdf
Normal file
BIN
gui/app/components/section/flowchart/embed.pdf
Normal file
Binary file not shown.
138
gui/app/components/section/flowchart/type-editor.js
Normal file
138
gui/app/components/section/flowchart/type-editor.js
Normal file
|
@ -0,0 +1,138 @@
|
||||||
|
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
|
||||||
|
//
|
||||||
|
// This software (Documize Community Edition) is licensed under
|
||||||
|
// GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html
|
||||||
|
//
|
||||||
|
// You can operate outside the AGPL restrictions by purchasing
|
||||||
|
// Documize Enterprise Edition and obtaining a commercial license
|
||||||
|
// by contacting <sales@documize.com>.
|
||||||
|
//
|
||||||
|
// https://documize.com
|
||||||
|
|
||||||
|
import { schedule } from '@ember/runloop';
|
||||||
|
import { inject as service } from '@ember/service';
|
||||||
|
import { computed, observer } from '@ember/object';
|
||||||
|
import Component from '@ember/component';
|
||||||
|
|
||||||
|
export default Component.extend({
|
||||||
|
appMeta: service(),
|
||||||
|
sectionSvc: service('section'),
|
||||||
|
isDirty: false,
|
||||||
|
waiting: false,
|
||||||
|
diagram: '',
|
||||||
|
diagramXML: '',
|
||||||
|
title: '',
|
||||||
|
readyToSave: false,
|
||||||
|
previewButtonCaption: 'Preview',
|
||||||
|
flowCallback: null,
|
||||||
|
editorId: computed('page', function () {
|
||||||
|
let page = this.get('page');
|
||||||
|
return `flowchart-editor-${page.id}`;
|
||||||
|
}),
|
||||||
|
|
||||||
|
goSave: observer('readyToSave', function() {
|
||||||
|
if (this.get('readyToSave')) {
|
||||||
|
let page = this.get('page');
|
||||||
|
let meta = this.get('meta');
|
||||||
|
meta.set('rawBody', this.get('diagram'));
|
||||||
|
page.set('title', this.get('title'));
|
||||||
|
|
||||||
|
this.set('waiting', false);
|
||||||
|
this.teardownEditor();
|
||||||
|
this.get('onAction')(page, meta);
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
|
||||||
|
didReceiveAttrs() {
|
||||||
|
this._super(...arguments);
|
||||||
|
|
||||||
|
this.set('waiting', false);
|
||||||
|
this.set('diagram', this.get('meta.rawBody'));
|
||||||
|
this.set('title', this.get('page.title'));
|
||||||
|
},
|
||||||
|
|
||||||
|
didInsertElement() {
|
||||||
|
this._super(...arguments);
|
||||||
|
schedule('afterRender', () => {
|
||||||
|
this.setupEditor();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
willDestroyElement() {
|
||||||
|
this._super(...arguments);
|
||||||
|
this.teardownEditor();
|
||||||
|
},
|
||||||
|
|
||||||
|
setupEditor() {
|
||||||
|
let self = this;
|
||||||
|
|
||||||
|
let flowCallback = function(evt) {
|
||||||
|
if (self.get('isDestroyed') || self.get('isDestroying')) return;
|
||||||
|
if (evt.origin !== 'https://www.draw.io') return;
|
||||||
|
if (evt.data.length === 0) return;
|
||||||
|
|
||||||
|
let editorFrame = document.getElementById(self.get('editorId'));
|
||||||
|
var msg = JSON.parse(evt.data);
|
||||||
|
|
||||||
|
switch (msg.event) {
|
||||||
|
case 'init':
|
||||||
|
editorFrame.contentWindow.postMessage(
|
||||||
|
JSON.stringify({action: 'load', autosave: 1, xmlpng: self.get('diagram')}), '*');
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'save':
|
||||||
|
self.set('diagramXML', msg.xml);
|
||||||
|
// Trigger onAction() callback using sneaky trick.
|
||||||
|
Mousetrap.trigger('ctrl+s');
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'autosave':
|
||||||
|
self.set('diagramXML', msg.xml);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'load':
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'exit':
|
||||||
|
self.sendAction('onCancel');
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'export':
|
||||||
|
self.set('diagram', msg.data);
|
||||||
|
self.set('readyToSave', true);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
window.addEventListener('message', flowCallback);
|
||||||
|
this.set('flowCallback', flowCallback);
|
||||||
|
},
|
||||||
|
|
||||||
|
teardownEditor() {
|
||||||
|
window.removeEventListener('message', this.get('flowCallback'));
|
||||||
|
},
|
||||||
|
|
||||||
|
actions: {
|
||||||
|
isDirty() {
|
||||||
|
return this.get('isDirty') || (this.get('diagram') !== this.get('meta.rawBody'));
|
||||||
|
},
|
||||||
|
|
||||||
|
onCancel() {
|
||||||
|
this.teardownEditor();
|
||||||
|
this.get('onCancel')();
|
||||||
|
},
|
||||||
|
|
||||||
|
onAction(title) {
|
||||||
|
this.set('waiting', true);
|
||||||
|
this.set('title', title);
|
||||||
|
|
||||||
|
let editorFrame = document.getElementById(this.get('editorId'));
|
||||||
|
editorFrame.contentWindow.postMessage(JSON.stringify({action: 'export', format: 'xmlpng', xml: this.get('diagramXML'), spin: 'Updating'}), '*');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// https://github.com/jgraph/drawio-html5/blob/master/localstorage.html
|
||||||
|
// https://desk.draw.io/support/solutions/articles/16000042546-what-url-parameters-are-supported-
|
||||||
|
// https://desk.draw.io/support/solutions/articles/16000042544-how-does-embed-mode-work-
|
||||||
|
// https://jgraph.github.io/mxgraph/docs/js-api/files/editor/mxEditor-js.html
|
15
gui/app/components/section/flowchart/type-renderer.js
Normal file
15
gui/app/components/section/flowchart/type-renderer.js
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
|
||||||
|
//
|
||||||
|
// This software (Documize Community Edition) is licensed under
|
||||||
|
// GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html
|
||||||
|
//
|
||||||
|
// You can operate outside the AGPL restrictions by purchasing
|
||||||
|
// Documize Enterprise Edition and obtaining a commercial license
|
||||||
|
// by contacting <sales@documize.com>.
|
||||||
|
//
|
||||||
|
// https://documize.com
|
||||||
|
|
||||||
|
import Component from '@ember/component';
|
||||||
|
|
||||||
|
export default Component.extend({
|
||||||
|
});
|
|
@ -26,7 +26,6 @@ export function initialize(application) {
|
||||||
application.register('constants:main', cs);
|
application.register('constants:main', cs);
|
||||||
|
|
||||||
Dropzone.autoDiscover = false;
|
Dropzone.autoDiscover = false;
|
||||||
CodeMirror.modeURL = "/codemirror/mode/%N/%N.js";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
|
|
@ -9,14 +9,14 @@
|
||||||
//
|
//
|
||||||
// https://documize.com
|
// https://documize.com
|
||||||
|
|
||||||
import Model from 'ember-data/model';
|
|
||||||
import attr from 'ember-data/attr';
|
import attr from 'ember-data/attr';
|
||||||
// import { belongsTo } from 'ember-data/relationships';
|
import Model from 'ember-data/model';
|
||||||
|
|
||||||
export default Model.extend({
|
export default Model.extend({
|
||||||
pageId: attr('string'),
|
pageId: attr('string'),
|
||||||
documentId: attr('string'),
|
documentId: attr('string'),
|
||||||
orgId: attr('string'),
|
orgId: attr('string'),
|
||||||
|
userId: attr('string'),
|
||||||
rawBody: attr(),
|
rawBody: attr(),
|
||||||
config: attr(),
|
config: attr(),
|
||||||
externalSource: attr('boolean', { defaultValue: false }),
|
externalSource: attr('boolean', { defaultValue: false }),
|
||||||
|
|
|
@ -10,7 +10,6 @@
|
||||||
// https://documize.com
|
// https://documize.com
|
||||||
|
|
||||||
import { hash } from 'rsvp';
|
import { hash } from 'rsvp';
|
||||||
|
|
||||||
import { inject as service } from '@ember/service';
|
import { inject as service } from '@ember/service';
|
||||||
import Route from '@ember/routing/route';
|
import Route from '@ember/routing/route';
|
||||||
import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';
|
import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';
|
||||||
|
|
|
@ -22,16 +22,8 @@
|
||||||
|
|
||||||
@import "vendor.scss";
|
@import "vendor.scss";
|
||||||
@import "print.scss";
|
@import "print.scss";
|
||||||
@import "section/trello.scss";
|
|
||||||
@import "section/gemini.scss";
|
|
||||||
@import "section/github.scss";
|
|
||||||
@import "section/markdown.scss";
|
|
||||||
@import "section/table.scss";
|
|
||||||
@import "section/code.scss";
|
|
||||||
@import "section/plantuml.scss";
|
|
||||||
@import "section/papertrail.scss";
|
|
||||||
@import "section/wysiwyg.scss";
|
|
||||||
@import "news.scss";
|
@import "news.scss";
|
||||||
|
@import "section/all.scss";
|
||||||
@import "enterprise/all.scss";
|
@import "enterprise/all.scss";
|
||||||
|
|
||||||
// Bootstrap override that removes gutter space on smaller screens
|
// Bootstrap override that removes gutter space on smaller screens
|
||||||
|
|
10
gui/app/styles/section/all.scss
Normal file
10
gui/app/styles/section/all.scss
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
@import "trello.scss";
|
||||||
|
@import "gemini.scss";
|
||||||
|
@import "github.scss";
|
||||||
|
@import "markdown.scss";
|
||||||
|
@import "table.scss";
|
||||||
|
@import "code.scss";
|
||||||
|
@import "plantuml.scss";
|
||||||
|
@import "papertrail.scss";
|
||||||
|
@import "wysiwyg.scss";
|
||||||
|
@import "flowchart.scss";
|
715
gui/app/styles/section/flowchart.scss
Normal file
715
gui/app/styles/section/flowchart.scss
Normal file
|
@ -0,0 +1,715 @@
|
||||||
|
.geEditor {
|
||||||
|
font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial !important;
|
||||||
|
font-size:10pt;
|
||||||
|
border:none;
|
||||||
|
margin:0px;
|
||||||
|
color:#000000 !important;
|
||||||
|
}
|
||||||
|
.geEditor input[type=text]::-ms-clear {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.geMenubarContainer .geItem, .geToolbar .geButton, .geToolbar .geLabel, .geSidebarContainer .geTitle {
|
||||||
|
cursor:pointer !important;
|
||||||
|
}
|
||||||
|
.geBackgroundPage {
|
||||||
|
-webkit-box-shadow:0px 0px 3px 0px #d9d9d9;
|
||||||
|
-moz-box-shadow:0px 0px 3px 0px #d9d9d9;
|
||||||
|
box-shadow:0px 0px 3px 0px #d9d9d9;
|
||||||
|
}
|
||||||
|
.geSidebarContainer a, .geMenubarContainer a, .geToolbar a {
|
||||||
|
color:#000000 !important;
|
||||||
|
text-decoration:none;
|
||||||
|
}
|
||||||
|
.geMenubarContainer, .geToolbarContainer, .geDiagramContainer, .geSidebarContainer, .geFooterContainer, .geHsplit, .geVsplit {
|
||||||
|
overflow:hidden;
|
||||||
|
position:absolute;
|
||||||
|
cursor:default;
|
||||||
|
}
|
||||||
|
.geFormatContainer {
|
||||||
|
background-color:whiteSmoke;
|
||||||
|
overflow-x: hidden !important;
|
||||||
|
overflow-y: auto !important;
|
||||||
|
font-size:12px;
|
||||||
|
}
|
||||||
|
.geDiagramContainer {
|
||||||
|
background-color:#ffffff;
|
||||||
|
outline:none;
|
||||||
|
}
|
||||||
|
.geMenubar, .geToolbar {
|
||||||
|
white-space:nowrap;
|
||||||
|
display:block;
|
||||||
|
width:100%;
|
||||||
|
}
|
||||||
|
.geMenubarContainer .geItem, .geToolbar .geButton, .geToolbar .geLabel, .geSidebar, .geSidebarContainer .geTitle, .geSidebar .geItem, .mxPopupMenuItem {
|
||||||
|
-webkit-transition: all 0.1s ease-in-out;
|
||||||
|
-moz-transition: all 0.1s ease-in-out;
|
||||||
|
-o-transition: all 0.1s ease-in-out;
|
||||||
|
-ms-transition: all 0.1s ease-in-out;
|
||||||
|
transition: all 0.1s ease-in-out;
|
||||||
|
}
|
||||||
|
.geHint {
|
||||||
|
background-color: #ffffff;
|
||||||
|
border: 1px solid gray;
|
||||||
|
padding: 4px 16px 4px 16px;
|
||||||
|
border-radius:3px;
|
||||||
|
-webkit-box-shadow: 1px 1px 2px 0px #ddd;
|
||||||
|
-moz-box-shadow: 1px 1px 2px 0px #ddd;
|
||||||
|
box-shadow: 1px 1px 2px 0px #ddd;
|
||||||
|
opacity:0.8;
|
||||||
|
filter:alpha(opacity=80);
|
||||||
|
}
|
||||||
|
.geStatusAlert {
|
||||||
|
white-space:nowrap;
|
||||||
|
margin-top:-5px;
|
||||||
|
font-size:12px;
|
||||||
|
padding:4px 6px 4px 6px;
|
||||||
|
background-color:#f2dede;
|
||||||
|
border:1px solid #ebccd1;
|
||||||
|
color:#a94442 !important;
|
||||||
|
border-radius:3px;
|
||||||
|
}
|
||||||
|
.geStatusAlert:hover {
|
||||||
|
background-color:#f1d8d8;
|
||||||
|
border-color:#d6b2b8;
|
||||||
|
}
|
||||||
|
.geStatusMessage {
|
||||||
|
white-space:nowrap;
|
||||||
|
margin-top:-5px;
|
||||||
|
padding:4px 6px 4px 6px;
|
||||||
|
font-size:12px;
|
||||||
|
background-image: -webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);
|
||||||
|
background-image: -o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);
|
||||||
|
background-image: -webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));
|
||||||
|
background-image: linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
border:1px solid #b2dba1;
|
||||||
|
border-radius:3px;
|
||||||
|
color:#3c763d !important;
|
||||||
|
}
|
||||||
|
.geStatusMessage:hover {
|
||||||
|
background:#c8e5bc;
|
||||||
|
border-color:#b2dba1;
|
||||||
|
}
|
||||||
|
.geAlert {
|
||||||
|
position:absolute;
|
||||||
|
white-space:nowrap;
|
||||||
|
padding:14px;
|
||||||
|
background-color:#f2dede;
|
||||||
|
border:1px solid #ebccd1;
|
||||||
|
color:#a94442;
|
||||||
|
border-radius:3px;
|
||||||
|
-webkit-box-shadow: 2px 2px 3px 0px #ddd;
|
||||||
|
-moz-box-shadow: 2px 2px 3px 0px #ddd;
|
||||||
|
box-shadow: 2px 2px 3px 0px #ddd;
|
||||||
|
}
|
||||||
|
.geBtn {
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
border-radius: 2px;
|
||||||
|
border: 1px solid #d8d8d8;
|
||||||
|
color: #333;
|
||||||
|
cursor: default;
|
||||||
|
font-size: 11px;
|
||||||
|
font-weight: bold;
|
||||||
|
height: 29px;
|
||||||
|
line-height: 27px;
|
||||||
|
margin: 0 0 0 8px;
|
||||||
|
min-width: 72px;
|
||||||
|
outline: 0;
|
||||||
|
padding: 0 8px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.geBtn:hover, .geBtn:focus {
|
||||||
|
-webkit-box-shadow: 0px 1px 1px rgba(0,0,0,0.1);
|
||||||
|
-moz-box-shadow: 0px 1px 1px rgba(0,0,0,0.1);
|
||||||
|
box-shadow: 0px 1px 1px rgba(0,0,0,0.1);
|
||||||
|
border: 1px solid #c6c6c6;
|
||||||
|
background-color: #f8f8f8;
|
||||||
|
background-image: linear-gradient(#f8f8f8 0px,#f1f1f1 100%);
|
||||||
|
color: #111;
|
||||||
|
}
|
||||||
|
.geBtn:disabled {
|
||||||
|
opacity: .5;
|
||||||
|
}
|
||||||
|
.geBtnUp {
|
||||||
|
background-image: url(data:image/gif;base64,R0lGODlhCgAGAJECAGZmZtXV1f///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJERjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJFMDg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkREODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRFODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjwiQBhGYglCKhXFLBQA7);
|
||||||
|
_background-image: url(up.gif);
|
||||||
|
background-position: center center;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
.geBtnUp:active {
|
||||||
|
background-color: #4d90fe;
|
||||||
|
background-image: linear-gradient(#4d90fe 0px,#357ae8 100%);
|
||||||
|
}
|
||||||
|
.geBtnDown {
|
||||||
|
background-image: url(data:image/gif;base64,R0lGODlhCgAGAJECANXV1WZmZv///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJEQjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJEQzg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkQ5ODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRBODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjxLLewEiCAnOZBzeBQA7);
|
||||||
|
_background-image: url(down.gif);
|
||||||
|
background-position: center center;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
.geBtnDown:active {
|
||||||
|
background-color: #4d90fe;
|
||||||
|
background-image: linear-gradient(#4d90fe 0px,#357ae8 100%);
|
||||||
|
}
|
||||||
|
.geColorBtn {
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
background-image: linear-gradient(#f5f5f5 0px,#e1e1e1 100%);
|
||||||
|
border-radius: 4px;
|
||||||
|
border: 1px solid rgba(0,0,0,0.5);
|
||||||
|
color: #333;
|
||||||
|
cursor: default;
|
||||||
|
margin: 0px;
|
||||||
|
outline: 0;
|
||||||
|
padding: 0px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.geColorBtn:hover {
|
||||||
|
-webkit-box-shadow: 0px 1px 1px rgba(0,0,0,0.1);
|
||||||
|
-moz-box-shadow: 0px 1px 1px rgba(0,0,0,0.1);
|
||||||
|
box-shadow: 0px 1px 1px rgba(0,0,0,0.1);
|
||||||
|
border: 1px solid rgba(0,0,0,0.7);
|
||||||
|
}
|
||||||
|
.geColorBtn:active {
|
||||||
|
background-color: #4d90fe;
|
||||||
|
background-image: linear-gradient(#4d90fe 0px,#357ae8 100%);
|
||||||
|
border: 1px solid #2f5bb7;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.geColorBtn:disabled {
|
||||||
|
opacity: .5;
|
||||||
|
}
|
||||||
|
.gePrimaryBtn {
|
||||||
|
background-color: #4d90fe;
|
||||||
|
background-image: linear-gradient(#4d90fe 0px,#4787ed 100%);
|
||||||
|
border: 1px solid #3079ed;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.gePrimaryBtn:hover, .gePrimaryBtn:focus {
|
||||||
|
background-color: #357ae8;
|
||||||
|
background-image: linear-gradient(#4d90fe 0px,#357ae8 100%);
|
||||||
|
border: 1px solid #2f5bb7;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.gePrimaryBtn:disabled {
|
||||||
|
opacity: .5;
|
||||||
|
}
|
||||||
|
.geAlertLink {
|
||||||
|
color:#843534;
|
||||||
|
font-weight:700;
|
||||||
|
text-decoration:none;
|
||||||
|
}
|
||||||
|
.geMenubarContainer {
|
||||||
|
background-color:#ffffff;
|
||||||
|
}
|
||||||
|
.geMenubar {
|
||||||
|
padding:0px 2px 0px 2px;
|
||||||
|
vertical-align:middle;
|
||||||
|
}
|
||||||
|
.geMenubarContainer .geItem, .geToolbar .geItem {
|
||||||
|
padding:6px 8px 6px 8px;
|
||||||
|
cursor:default;
|
||||||
|
}
|
||||||
|
.geMenubarContainer .geItem:hover {
|
||||||
|
background:#eeeeee;
|
||||||
|
}
|
||||||
|
.mxDisabled:hover {
|
||||||
|
background:inherit !important;
|
||||||
|
}
|
||||||
|
.geMenubar a.geStatus {
|
||||||
|
color:#b3b3b3;
|
||||||
|
padding-left:6px;
|
||||||
|
display:inline-block;
|
||||||
|
cursor:default !important;
|
||||||
|
}
|
||||||
|
.geMenubar a.geStatus:hover {
|
||||||
|
background:transparent;
|
||||||
|
}
|
||||||
|
.geMenubarMenu {
|
||||||
|
border:1px solid #d5d5d5 !important;
|
||||||
|
}
|
||||||
|
.geToolbarContainer {
|
||||||
|
background:whiteSmoke;
|
||||||
|
border-bottom:1px solid #e0e0e0;
|
||||||
|
}
|
||||||
|
.geSidebarContainer .geToolbarContainer {
|
||||||
|
background:transparent;
|
||||||
|
border-bottom:none;
|
||||||
|
}
|
||||||
|
.geSidebarContainer button {
|
||||||
|
text-overflow:ellipsis;
|
||||||
|
overflow:hidden;
|
||||||
|
}
|
||||||
|
.geToolbar {
|
||||||
|
padding:1px 0px 0px 6px;
|
||||||
|
border-top:1px solid #e0e0e0;
|
||||||
|
-webkit-box-shadow: inset 0 1px 0 0 #fff;
|
||||||
|
-moz-box-shadow: inset 0 1px 0 0 #fff;
|
||||||
|
box-shadow: inset 0 1px 0 0 #fff;
|
||||||
|
}
|
||||||
|
.geToolbarContainer .geSeparator {
|
||||||
|
float:left;
|
||||||
|
width:1px;
|
||||||
|
height:34px;
|
||||||
|
background:#e5e5e5;
|
||||||
|
margin-left:6px;
|
||||||
|
margin-right:6px;
|
||||||
|
margin-top:-2px;
|
||||||
|
}
|
||||||
|
.geToolbarContainer .geButton {
|
||||||
|
float:left;
|
||||||
|
width:20px;
|
||||||
|
height:20px;
|
||||||
|
padding:0px 2px 4px 2px;
|
||||||
|
margin:2px;
|
||||||
|
border:1px solid transparent;
|
||||||
|
cursor:pointer;
|
||||||
|
opacity:0.6;
|
||||||
|
filter:alpha(opacity=60);
|
||||||
|
}
|
||||||
|
.geToolbarContainer .geButton:hover {
|
||||||
|
border:1px solid gray;
|
||||||
|
border-radius:2px;
|
||||||
|
opacity:1;
|
||||||
|
filter:none !important;
|
||||||
|
}
|
||||||
|
.geToolbarContainer .geButton:active {
|
||||||
|
border:1px solid black;
|
||||||
|
}
|
||||||
|
div.mxWindow .geButton {
|
||||||
|
margin: -1px 2px 2px 2px;
|
||||||
|
padding: 1px 2px 2px 1px;
|
||||||
|
}
|
||||||
|
.geToolbarContainer .geLabel {
|
||||||
|
float:left;
|
||||||
|
margin:2px;
|
||||||
|
cursor:pointer;
|
||||||
|
padding:3px 5px 3px 5px;
|
||||||
|
border:1px solid transparent;
|
||||||
|
opacity:0.6;
|
||||||
|
filter:alpha(opacity=60);
|
||||||
|
}
|
||||||
|
.geToolbarContainer .geLabel:hover {
|
||||||
|
border:1px solid gray;
|
||||||
|
border-radius:2px;
|
||||||
|
opacity:0.9;
|
||||||
|
filter:alpha(opacity=90) !important;
|
||||||
|
}
|
||||||
|
.geToolbarContainer .geLabel:active {
|
||||||
|
border:1px solid black;
|
||||||
|
opacity:1;
|
||||||
|
filter:none !important;
|
||||||
|
}
|
||||||
|
.geToolbarContainer .mxDisabled:hover {
|
||||||
|
border:1px solid transparent !important;
|
||||||
|
opacity:0.2 !important;
|
||||||
|
filter:alpha(opacity=20) !important;
|
||||||
|
}
|
||||||
|
.geToolbarMenu {
|
||||||
|
border:3px solid #e0e0e0 !important;
|
||||||
|
-webkit-box-shadow:none !important;
|
||||||
|
-moz-box-shadow:none !important;
|
||||||
|
box-shadow:none !important;
|
||||||
|
filter:none !important;
|
||||||
|
}
|
||||||
|
.geDiagramBackdrop {
|
||||||
|
background-color: #ebebeb;
|
||||||
|
border: 1px solid #e5e5e5;
|
||||||
|
}
|
||||||
|
.geSidebarContainer {
|
||||||
|
background:#ffffff;
|
||||||
|
overflow:hidden;
|
||||||
|
position:absolute;
|
||||||
|
border-top:1px solid #e5e5e5;
|
||||||
|
overflow:auto;
|
||||||
|
}
|
||||||
|
.geSidebar {
|
||||||
|
background:whiteSmoke;
|
||||||
|
border-bottom:1px solid #e5e5e5;
|
||||||
|
padding:5px;
|
||||||
|
_padding:1px;
|
||||||
|
padding-bottom:12px;
|
||||||
|
overflow:hidden;
|
||||||
|
}
|
||||||
|
.geSidebarContainer .geTitle {
|
||||||
|
display:block;
|
||||||
|
font-size:9pt;
|
||||||
|
border-bottom:1px solid #e5e5e5;
|
||||||
|
font-weight:normal;
|
||||||
|
padding:6px 0px 6px 14px;
|
||||||
|
margin:0px;
|
||||||
|
cursor:default;
|
||||||
|
background:#eeeeee;
|
||||||
|
white-space:nowrap;
|
||||||
|
overflow:hidden;
|
||||||
|
text-overflow:ellipsis;
|
||||||
|
line-height:1.4em;
|
||||||
|
}
|
||||||
|
.geSidebarContainer .geTitle:hover {
|
||||||
|
background:#e5e5e5;
|
||||||
|
}
|
||||||
|
.geTitle img {
|
||||||
|
opacity:0.5;
|
||||||
|
_filter:alpha(opacity=50);
|
||||||
|
}
|
||||||
|
.geTitle img:hover {
|
||||||
|
opacity:1;
|
||||||
|
_filter:alpha(opacity=100);
|
||||||
|
}
|
||||||
|
.geTitle .geButton {
|
||||||
|
border:1px solid transparent;
|
||||||
|
padding:3px;
|
||||||
|
border-radius:2px;
|
||||||
|
}
|
||||||
|
.geTitle .geButton:hover {
|
||||||
|
border:1px solid gray;
|
||||||
|
}
|
||||||
|
.geSidebar .geItem {
|
||||||
|
display:inline-block;
|
||||||
|
background-repeat:no-repeat;
|
||||||
|
background-position:50% 50%;
|
||||||
|
border:1px solid transparent;
|
||||||
|
border-radius:2px;
|
||||||
|
cursor: move;
|
||||||
|
}
|
||||||
|
.geSidebar .geItem:hover {
|
||||||
|
border:1px solid gray !important;
|
||||||
|
}
|
||||||
|
.geItem {
|
||||||
|
vertical-align: top;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
.geSidebarTooltip {
|
||||||
|
position:absolute;
|
||||||
|
background:white;
|
||||||
|
overflow:hidden;
|
||||||
|
border:1px solid gray;
|
||||||
|
border-radius:8px;
|
||||||
|
-webkit-box-shadow:0px 0px 2px 2px #d5d5d5;
|
||||||
|
-moz-box-shadow:0px 0px 2px 2px #d5d5d5;
|
||||||
|
box-shadow:0px 0px 2px 2px #d5d5d5;
|
||||||
|
_filter:progid:DXImageTransform.Microsoft.DropShadow(OffX=2, OffY=2, Color='#d5d5d5', Positive='true');
|
||||||
|
}
|
||||||
|
.geFooterContainer {
|
||||||
|
background:#e5e5e5;
|
||||||
|
border-top:1px solid #c0c0c0;
|
||||||
|
}
|
||||||
|
.geFooterContainer a {
|
||||||
|
display:inline-block;
|
||||||
|
box-sizing:border-box;
|
||||||
|
width:100%;
|
||||||
|
white-space:nowrap;
|
||||||
|
font-size:14px;
|
||||||
|
color:#235695;
|
||||||
|
font-weight:bold;
|
||||||
|
text-decoration:none;
|
||||||
|
}
|
||||||
|
.geFooterContainer table {
|
||||||
|
border-collapse:collapse;
|
||||||
|
margin:0 auto;
|
||||||
|
}
|
||||||
|
.geFooterContainer td {
|
||||||
|
border-left:1px solid #c0c0c0;
|
||||||
|
border-right:1px solid #c0c0c0;
|
||||||
|
}
|
||||||
|
.geFooterContainer td:hover {
|
||||||
|
background-color: #b3b3b3;
|
||||||
|
}
|
||||||
|
.geHsplit {
|
||||||
|
cursor:col-resize;
|
||||||
|
background-color:#e5e5e5;
|
||||||
|
background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHBAMAAADdS/HjAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAHUlEQVQImWMQEGAQFWUQFmYQF2cQEmIQE2MQEQEACy4BF67hpEwAAAAASUVORK5CYII=);
|
||||||
|
_background-image:url('thumb_vertical.png');
|
||||||
|
background-repeat:no-repeat;
|
||||||
|
background-position:center center;
|
||||||
|
}
|
||||||
|
.geVsplit {
|
||||||
|
font-size:1pt;
|
||||||
|
cursor:row-resize;
|
||||||
|
background-color:#e5e5e5;
|
||||||
|
background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAEBAMAAACw6DhOAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAFElEQVQImWNgNVdzYBAUFBRggLMAEzYBy29kEPgAAAAASUVORK5CYII=);
|
||||||
|
_background-image:url('thumb_horz.png');
|
||||||
|
background-repeat:no-repeat;
|
||||||
|
background-position:center center;
|
||||||
|
}
|
||||||
|
.geHsplit:hover, .geVsplit:hover {
|
||||||
|
background-color:#d5d5d5;
|
||||||
|
}
|
||||||
|
.geDialog {
|
||||||
|
position:absolute;
|
||||||
|
background:white;
|
||||||
|
overflow:hidden;
|
||||||
|
padding:30px;
|
||||||
|
border:1px solid #acacac;
|
||||||
|
-webkit-box-shadow:0px 0px 2px 2px #d5d5d5;
|
||||||
|
-moz-box-shadow:0px 0px 2px 2px #d5d5d5;
|
||||||
|
box-shadow:0px 0px 2px 2px #d5d5d5;
|
||||||
|
_filter:progid:DXImageTransform.Microsoft.DropShadow(OffX=2, OffY=2, Color='#d5d5d5', Positive='true');
|
||||||
|
z-index: 2;
|
||||||
|
}
|
||||||
|
.geDialogClose {
|
||||||
|
position:absolute;
|
||||||
|
width:9px;
|
||||||
|
height:9px;
|
||||||
|
opacity:0.5;
|
||||||
|
cursor:pointer;
|
||||||
|
_filter:alpha(opacity=50);
|
||||||
|
}
|
||||||
|
.geDialogClose:hover {
|
||||||
|
opacity:1;
|
||||||
|
}
|
||||||
|
.geDialogTitle {
|
||||||
|
box-sizing:border-box;
|
||||||
|
white-space:nowrap;
|
||||||
|
background:rgb(229, 229, 229);
|
||||||
|
border-bottom:1px solid rgb(192, 192, 192);
|
||||||
|
font-size:15px;
|
||||||
|
font-weight:bold;
|
||||||
|
text-align:center;
|
||||||
|
color:rgb(35, 86, 149);
|
||||||
|
}
|
||||||
|
.geDialogFooter {
|
||||||
|
background:whiteSmoke;
|
||||||
|
white-space:nowrap;
|
||||||
|
text-align:right;
|
||||||
|
box-sizing:border-box;
|
||||||
|
border-top:1px solid #e5e5e5;
|
||||||
|
color:darkGray;
|
||||||
|
}
|
||||||
|
.geSprite {
|
||||||
|
background:url('data:image/png;base64,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') no-repeat;
|
||||||
|
_background:url('sprites.png') no-repeat top left;
|
||||||
|
width:21px;
|
||||||
|
height:21px;
|
||||||
|
}
|
||||||
|
.geBaseButton {
|
||||||
|
padding:10px;
|
||||||
|
border-radius:6px;
|
||||||
|
border:1px solid #c0c0c0;
|
||||||
|
cursor:pointer;
|
||||||
|
background-color:#ececec;
|
||||||
|
background-image:linear-gradient(#ececec 0%, #fcfcfc 100%);
|
||||||
|
}
|
||||||
|
.geBaseButton:hover {
|
||||||
|
background:#ececec;
|
||||||
|
}
|
||||||
|
.geBigButton {
|
||||||
|
color:#ffffff;
|
||||||
|
border: none;
|
||||||
|
padding:10px;
|
||||||
|
font-size:14pt;
|
||||||
|
white-space: nowrap;
|
||||||
|
border-radius:6px;
|
||||||
|
text-shadow: rgb(41, 89, 137) 0px 1px 0px;
|
||||||
|
background-color:#428bca;
|
||||||
|
background-image:linear-gradient(rgb(70, 135, 206) 0px, rgb(48, 104, 162) 100%);
|
||||||
|
-webkit-box-shadow: rgba(255, 255, 255, 0.0980392) 0px 1px 0px 0px inset, rgba(0, 0, 0, 0.2) 0px 1px 1px 0px;
|
||||||
|
-moz-box-shadow: rgba(255, 255, 255, 0.0980392) 0px 1px 0px 0px inset, rgba(0, 0, 0, 0.2) 0px 1px 1px 0px;
|
||||||
|
box-shadow: rgba(255, 255, 255, 0.0980392) 0px 1px 0px 0px inset, rgba(0, 0, 0, 0.2) 0px 1px 1px 0px;
|
||||||
|
}
|
||||||
|
.geBigButton:hover {
|
||||||
|
background-color:#2d6ca2;
|
||||||
|
background-image: linear-gradient(rgb(90, 148, 211) 0px, rgb(54, 115, 181) 100%);
|
||||||
|
}
|
||||||
|
.geBigButton:active {
|
||||||
|
background-color: rgb(54, 115, 181);
|
||||||
|
background-image: none;
|
||||||
|
}
|
||||||
|
@media print {
|
||||||
|
div.geNoPrint { display: none !important; }
|
||||||
|
}
|
||||||
|
.geSprite-actualsize { background-position: 0 0; }
|
||||||
|
.geSprite-bold { background-position: 0 -46px; }
|
||||||
|
.geSprite-bottom { background-position: 0 -92px; }
|
||||||
|
.geSprite-center { background-position: 0 -138px; }
|
||||||
|
.geSprite-delete { background-position: 0 -184px; }
|
||||||
|
.geSprite-fillcolor { background-position: 0 -229px; }
|
||||||
|
.geSprite-fit { background-position: 0 -277px; }
|
||||||
|
.geSprite-fontcolor { background-position: 0 -322px; }
|
||||||
|
.geSprite-gradientcolor { background-position: 0 -368px; }
|
||||||
|
.geSprite-image { background-position: 0 -414px; }
|
||||||
|
.geSprite-italic { background-position: 0 -460px; }
|
||||||
|
.geSprite-left { background-position: 0 -505px; }
|
||||||
|
.geSprite-middle { background-position: 0 -552px; }
|
||||||
|
.geSprite-print { background-position: 0 -598px; }
|
||||||
|
.geSprite-redo { background-position: 0 -644px; }
|
||||||
|
.geSprite-right { background-position: 0 -689px; }
|
||||||
|
.geSprite-shadow { background-position: 0 -735px; }
|
||||||
|
.geSprite-strokecolor { background-position: 0 -782px; }
|
||||||
|
.geSprite-top { background-position: 0 -828px; }
|
||||||
|
.geSprite-underline { background-position: 0 -874px; }
|
||||||
|
.geSprite-undo { background-position: 0 -920px; }
|
||||||
|
.geSprite-zoomin { background-position: 0 -966px; }
|
||||||
|
.geSprite-zoomout { background-position: 0 -1012px; }
|
||||||
|
.geSprite-arrow { background-position: 0 -1059px; }
|
||||||
|
.geSprite-linkedge { background-position: 0 -1105px; }
|
||||||
|
.geSprite-straight { background-position: 0 -1150px; }
|
||||||
|
.geSprite-entity { background-position: 0 -1196px; }
|
||||||
|
.geSprite-orthogonal { background-position: 0 -1242px; }
|
||||||
|
.geSprite-curved { background-position: 0 -1288px; }
|
||||||
|
.geSprite-noarrow { background-position: 0 -1334px; }
|
||||||
|
.geSprite-endclassic { background-position: 0 -1380px; }
|
||||||
|
.geSprite-endopen { background-position: 0 -1426px; }
|
||||||
|
.geSprite-endblock { background-position: 0 -1472px; }
|
||||||
|
.geSprite-endoval { background-position: 0 -1518px; }
|
||||||
|
.geSprite-enddiamond { background-position: 0 -1564px; }
|
||||||
|
.geSprite-endthindiamond { background-position: 0 -1610px; }
|
||||||
|
.geSprite-endclassictrans { background-position: 0 -1656px; }
|
||||||
|
.geSprite-endblocktrans { background-position: 0 -1702px; }
|
||||||
|
.geSprite-endovaltrans { background-position: 0 -1748px; }
|
||||||
|
.geSprite-enddiamondtrans { background-position: 0 -1794px; }
|
||||||
|
.geSprite-endthindiamondtrans { background-position: 0 -1840px; }
|
||||||
|
.geSprite-startclassic { background-position: 0 -1886px; }
|
||||||
|
.geSprite-startopen { background-position: 0 -1932px; }
|
||||||
|
.geSprite-startblock { background-position: 0 -1978px; }
|
||||||
|
.geSprite-startoval { background-position: 0 -2024px; }
|
||||||
|
.geSprite-startdiamond { background-position: 0 -2070px; }
|
||||||
|
.geSprite-startthindiamond { background-position: 0 -2116px; }
|
||||||
|
.geSprite-startclassictrans { background-position: 0 -2162px; }
|
||||||
|
.geSprite-startblocktrans { background-position: 0 -2208px; }
|
||||||
|
.geSprite-startovaltrans { background-position: 0 -2254px; }
|
||||||
|
.geSprite-startdiamondtrans { background-position: 0 -2300px; }
|
||||||
|
.geSprite-startthindiamondtrans { background-position: 0 -2346px; }
|
||||||
|
.geSprite-globe { background-position: 0 -2392px; }
|
||||||
|
.geSprite-orderedlist { background-position: 0 -2438px; }
|
||||||
|
.geSprite-unorderedlist { background-position: 0 -2484px; }
|
||||||
|
.geSprite-horizontalrule { background-position: 0 -2530px; }
|
||||||
|
.geSprite-link { background-position: 0 -2576px; }
|
||||||
|
.geSprite-indent { background-position: 0 -2622px; }
|
||||||
|
.geSprite-outdent { background-position: 0 -2668px; }
|
||||||
|
.geSprite-code { background-position: 0 -2714px; }
|
||||||
|
.geSprite-fontbackground { background-position: 0 -2760px; }
|
||||||
|
.geSprite-removeformat { background-position: 0 -2806px; }
|
||||||
|
.geSprite-superscript { background-position: 0 -2852px; }
|
||||||
|
.geSprite-subscript { background-position: 0 -2898px; }
|
||||||
|
.geSprite-table { background-position: 0 -2944px; }
|
||||||
|
.geSprite-deletecolumn { background-position: 0 -2990px; }
|
||||||
|
.geSprite-deleterow { background-position: 0 -3036px; }
|
||||||
|
.geSprite-insertcolumnafter { background-position: 0 -3082px; }
|
||||||
|
.geSprite-insertcolumnbefore { background-position: 0 -3128px; }
|
||||||
|
.geSprite-insertrowafter { background-position: 0 -3174px; }
|
||||||
|
.geSprite-insertrowbefore { background-position: 0 -3220px; }
|
||||||
|
.geSprite-grid { background-position: 0 -3272px; }
|
||||||
|
.geSprite-guides { background-position: 0 -3324px; }
|
||||||
|
.geSprite-dots { background-position: 0 -3370px; }
|
||||||
|
.geSprite-alignleft { background-position: 0 -3416px; }
|
||||||
|
.geSprite-alignright { background-position: 0 -3462px; }
|
||||||
|
.geSprite-aligncenter { background-position: 0 -3508px; }
|
||||||
|
.geSprite-aligntop { background-position: 0 -3554px; }
|
||||||
|
.geSprite-alignbottom { background-position: 0 -3600px; }
|
||||||
|
.geSprite-alignmiddle { background-position: 0 -3646px; }
|
||||||
|
.geSprite-justifyfull { background-position: 0 -3692px; }
|
||||||
|
.geSprite-formatpanel { background-position: 0 -3738px; }
|
||||||
|
.geSprite-connection { background-position: 0 -3784px; }
|
||||||
|
.geSprite-vertical { background-position: 0 -3830px; }
|
||||||
|
.geSprite-simplearrow { background-position: 0 -3876px; }
|
||||||
|
.geSprite-plus { background-position: 0 -3922px; }
|
||||||
|
.geSprite-rounded { background-position: 0 -3968px; }
|
||||||
|
.geSprite-toback { background-position: 0 -4014px; }
|
||||||
|
.geSprite-tofront { background-position: 0 -4060px; }
|
||||||
|
.geSprite-duplicate { background-position: 0 -4106px; }
|
||||||
|
.geSprite-insert { background-position: 0 -4152px; }
|
||||||
|
.geSprite-endblockthin { background-position: 0 -4201px; }
|
||||||
|
.geSprite-endblockthintrans { background-position: 0 -4247px; }
|
||||||
|
.geSprite-enderone { background-position: 0 -4293px; }
|
||||||
|
.geSprite-enderonetoone { background-position: 0 -4339px; }
|
||||||
|
.geSprite-enderonetomany { background-position: 0 -4385px; }
|
||||||
|
.geSprite-endermany { background-position: 0 -4431px; }
|
||||||
|
.geSprite-enderoneopt { background-position: 0 -4477px; }
|
||||||
|
.geSprite-endermanyopt { background-position: 0 -4523px; }
|
||||||
|
.geSprite-endclassicthin { background-position: 0 -4938px; }
|
||||||
|
.geSprite-endclassicthintrans { background-position: 0 -4984px; }
|
||||||
|
.geSprite-enddash { background-position: 0 -5029px; }
|
||||||
|
.geSprite-endcircleplus { background-position: 0 -5075px; }
|
||||||
|
.geSprite-endcircle { background-position: 0 -5121px; }
|
||||||
|
.geSprite-endasync { background-position: 0 -5167px; }
|
||||||
|
.geSprite-endasynctrans { background-position: 0 -5213px; }
|
||||||
|
.geSprite-startblockthin { background-position: 0 -4569px; }
|
||||||
|
.geSprite-startblockthintrans { background-position: 0 -4615px; }
|
||||||
|
.geSprite-starterone { background-position: 0 -4661px; }
|
||||||
|
.geSprite-starteronetoone { background-position: 0 -4707px; }
|
||||||
|
.geSprite-starteronetomany { background-position: 0 -4753px; }
|
||||||
|
.geSprite-startermany { background-position: 0 -4799px; }
|
||||||
|
.geSprite-starteroneopt { background-position: 0 -4845px; }
|
||||||
|
.geSprite-startermanyopt { background-position: 0 -4891px; }
|
||||||
|
.geSprite-startclassicthin { background-position: 0 -5259px; }
|
||||||
|
.geSprite-startclassicthintrans { background-position: 0 -5305px; }
|
||||||
|
.geSprite-startdash { background-position: 0 -5351px; }
|
||||||
|
.geSprite-startcircleplus { background-position: 0 -5397px; }
|
||||||
|
.geSprite-startcircle { background-position: 0 -5443px; }
|
||||||
|
.geSprite-startasync { background-position: 0 -5489px; }
|
||||||
|
.geSprite-startasynctrans { background-position: 0 -5535px; }
|
||||||
|
.geSprite-startcross { background-position: 0 -5581px; }
|
||||||
|
.geSprite-startopenthin { background-position: 0 -5627px; }
|
||||||
|
.geSprite-startopenasync { background-position: 0 -5673px; }
|
||||||
|
.geSprite-endcross { background-position: 0 -5719px; }
|
||||||
|
.geSprite-endopenthin { background-position: 0 -5765px; }
|
||||||
|
.geSprite-endopenasync { background-position: 0 -5811px; }
|
||||||
|
.geSprite-verticalelbow { background-position: 0 -5857px; }
|
||||||
|
.geSprite-horizontalelbow { background-position: 0 -5903px; }
|
||||||
|
.geSprite-horizontalisometric { background-position: 0 -5949px; }
|
||||||
|
.geSprite-verticalisometric { background-position: 0 -5995px; }
|
||||||
|
html div.mxRubberband {
|
||||||
|
border-color:#0000DD;
|
||||||
|
background:#99ccff;
|
||||||
|
}
|
||||||
|
td.mxPopupMenuIcon div {
|
||||||
|
width:16px;
|
||||||
|
height:16px;
|
||||||
|
}
|
||||||
|
html div.mxPopupMenu {
|
||||||
|
-webkit-box-shadow:2px 2px 3px #d5d5d5;
|
||||||
|
-moz-box-shadow:2px 2px 3px #d5d5d5;
|
||||||
|
box-shadow:2px 2px 3px #d5d5d5;
|
||||||
|
_filter:progid:DXImageTransform.Microsoft.DropShadow(OffX=2, OffY=2, Color='#d0d0d0', Positive='true');
|
||||||
|
background:white;
|
||||||
|
position:absolute;
|
||||||
|
border:3px solid #e7e7e7;
|
||||||
|
padding:3px;
|
||||||
|
}
|
||||||
|
html table.mxPopupMenu {
|
||||||
|
border-collapse:collapse;
|
||||||
|
margin:0px;
|
||||||
|
}
|
||||||
|
html td.mxPopupMenuItem {
|
||||||
|
padding:7px 30px 7px 30px;
|
||||||
|
font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;
|
||||||
|
font-size:10pt;
|
||||||
|
}
|
||||||
|
html td.mxPopupMenuIcon {
|
||||||
|
background-color:white;
|
||||||
|
padding:0px;
|
||||||
|
}
|
||||||
|
td.mxPopupMenuIcon .geIcon {
|
||||||
|
padding:2px;
|
||||||
|
padding-bottom:4px;
|
||||||
|
margin:2px;
|
||||||
|
border:1px solid transparent;
|
||||||
|
opacity:0.5;
|
||||||
|
_width:26px;
|
||||||
|
_height:26px;
|
||||||
|
}
|
||||||
|
td.mxPopupMenuIcon .geIcon:hover {
|
||||||
|
border:1px solid gray;
|
||||||
|
border-radius:2px;
|
||||||
|
opacity:1;
|
||||||
|
}
|
||||||
|
html tr.mxPopupMenuItemHover {
|
||||||
|
background-color: #eeeeee;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
table.mxPopupMenu hr {
|
||||||
|
color:#cccccc;
|
||||||
|
background-color:#cccccc;
|
||||||
|
border:none;
|
||||||
|
height:1px;
|
||||||
|
}
|
||||||
|
table.mxPopupMenu tr {
|
||||||
|
font-size:4pt;
|
||||||
|
}
|
||||||
|
html td.mxWindowTitle {
|
||||||
|
font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;
|
||||||
|
text-align:left;
|
||||||
|
font-size:12px;
|
||||||
|
color:rgb(112, 112, 112);
|
||||||
|
padding:4px;
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
{{#section/base-editor document=document folder=folder page=page busy=waiting tip="Concise name that describes the diagram" isDirty=(action 'isDirty') onCancel=(action 'onCancel') onAction=(action 'onAction')}}
|
||||||
|
<div class="section-flowchart-diagram">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12">
|
||||||
|
<iframe id={{editorId}}
|
||||||
|
src="https://www.draw.io/?embed=1&ui=Kennedy&spin=0&proto=json&splash=0"
|
||||||
|
style="frameborder:0; border: 0; width: 100%; height: 1000px;">
|
||||||
|
</iframe>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/section/base-editor}}
|
|
@ -0,0 +1,3 @@
|
||||||
|
<div class="text-center">
|
||||||
|
<img src="{{page.body}}" />
|
||||||
|
</div>
|
BIN
gui/public/sections/flowchart.png
Normal file
BIN
gui/public/sections/flowchart.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 359 B |
BIN
gui/public/sections/flowchart@2x.png
Normal file
BIN
gui/public/sections/flowchart@2x.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 630 B |
Loading…
Add table
Add a link
Reference in a new issue