-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.html
165 lines (142 loc) · 6.9 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]-->
<!DOCTYPE html>
<html>
<head>
<title>Automata Graphic Editor</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<!-- CSS only -->
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-KyZXEAg3QhqLMpG8r+8fhAXLRk2vvoC2f3B09zVXn8CA5QIVfZOJ3BCsw2P0p/We" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.css">
<link rel="stylesheet" type="text/css" href="styles/grapheditor.css">
</head>
<body class="geEditor">
<!-- Console -->
<div id="console" class="d-flex flex-column align-items-stretch flex-shrink-0 bg-white" >
<a class=" align-items-center flex-shrink-0 p-1 link-dark text-decoration-none border-bottom" style="text-align: center !important;border-bottom: 2px solid #2a2a2a!important;">
<span style=" color: #cccccc !important;" class="fs-5 fw-semibold"><i class="bi bi-cpu"></i> Console</span>
</a>
<div class="list-group list-group-flush scrollarea" style="overflow-y: auto !important; font-size: 17px;">
<a href="#" class="list-group-item list-group-item-action active py-3 lh-tight bg-dark" aria-current="true" style=" border-color: #2a2a2a; background-color: #2a2a2a !important; text-align: center; word-break: break-word">
<div class="justify-content-between" style="text-align: center; padding-bottom: 10px;">
<strong class="mb-1" ><i class="bi bi-bounding-box-circles"></i> Current automaton</strong>
</div>
<div class=" mb-1 small"><i class="bi bi-info-circle"></i> Type:<span id="type">None</span></div>
<div class=" mb-1 small"><i class="bi bi-circle"></i> States: <span id="states">None</span></div>
<div class=" mb-1 small"><i class="bi bi-arrow-right"></i> Transitions: <span id="transitions">None</span></div>
<div class=" mb-1 small"><i class="bi bi-caret-right-square"></i> Initial States: <span id="initial-states">None</span></div>
<div class=" mb-1 small"><span style="font-style: italic; font-weight: bold;">F</span> Final States: <span id="final-states">None</span></div>
</a>
</div>
<div class="justify-content-between" style="text-align: center; padding-top: 20px; font-size: large">
<strong id="errors" class="mb-1"><i class="bi bi-bug"></i> <span id="errors-count">0</span> Errors</strong>
</div>
<div id="messages" style="overflow: auto;
overflow-y: auto !important;
height: 300px;">
</div>
</div>
<div id="word-input" class="justify-content-between" >
<form class="row g-3 needs-validation" novalidate>
<div class="col-md-12">
<label for="validationCustom01" class="form-label"><i class="bi bi-journal-text"></i><strong> Input</strong> </label>
<input placeholder="Enter a string, e.g: abaa" type="text" class="form-control" id="string-validation" required>
<div class="valid-feedback">
<span>The automata accepts this string! </span>
</div>
<div class="invalid-feedback">
<span>The automata doesn't accepts this string! </span>
</div>
</div>
</form>
</div>
<script type="text/javascript">
// Parses URL parameters. Supported parameters are:
// - lang=xy: Specifies the language of the user interface.
// - touch=1: Enables a touch-style user interface.
// - storage=local: Enables HTML5 local storage.
// - chrome=0: Chromeless mode.
var urlParams = (function(url)
{
var result = new Object();
var idx = url.lastIndexOf('?');
if (idx > 0)
{
var params = url.substring(idx + 1).split('&');
for (var i = 0; i < params.length; i++)
{
idx = params[i].indexOf('=');
if (idx > 0)
{
result[params[i].substring(0, idx)] = params[i].substring(idx + 1);
}
}
}
return result;
})(window.location.href);
// Default resources are included in grapheditor resources
mxLoadResources = false;
</script>
<script type="text/javascript" src="js/Init.js"></script>
<script type="text/javascript" src="deflate/pako.min.js"></script>
<script type="text/javascript" src="deflate/base64.js"></script>
<script type="text/javascript" src="jscolor/jscolor.js"></script>
<script type="text/javascript" src="sanitizer/sanitizer.min.js"></script>
<script type="text/javascript" src="js/mxClient.js"></script>
<script type="text/javascript" src="js/EditorUi.js"></script>
<script type="text/javascript" src="js/Editor.js"></script>
<script type="text/javascript" src="js/SidebarO4A.js"></script>
<script type="text/javascript" src="js/Graph.js"></script>
<script type="text/javascript" src="js/Format.js"></script>
<script type="text/javascript" src="js/Shapes.js"></script>
<script type="text/javascript" src="js/Actions.js"></script>
<script type="text/javascript" src="js/Menus.js"></script>
<script type="text/javascript" src="js/Toolbar.js"></script>
<script type="text/javascript" src="js/Dialogs.js"></script>
<script type="text/javascript" src="js/Compiler.js"></script>
<script type="text/javascript">
// Extends EditorUi to update I/O action states based on availability of backend
(function()
{
var editorUiInit = EditorUi.prototype.init;
EditorUi.prototype.init = function()
{
editorUiInit.apply(this, arguments);
this.actions.get('export').setEnabled(false);
// Updates action states which require a backend
if (!Editor.useLocalStorage)
{
mxUtils.post(OPEN_URL, '', mxUtils.bind(this, function(req)
{
var enabled = req.getStatus() != 404;
this.actions.get('open').setEnabled(enabled || Graph.fileSupport);
this.actions.get('import').setEnabled(enabled || Graph.fileSupport);
this.actions.get('save').setEnabled(enabled);
this.actions.get('saveAs').setEnabled(enabled);
this.actions.get('export').setEnabled(enabled);
}));
}
};
// Adds required resources (disables loading of fallback properties, this can only
// be used if we know that all keys are defined in the language specific file)
mxResources.loadDefaultBundle = false;
var bundle = mxResources.getDefaultBundle(RESOURCE_BASE, mxLanguage) ||
mxResources.getSpecialBundle(RESOURCE_BASE, mxLanguage);
// Fixes possible asynchronous requests
mxUtils.getAll([bundle, STYLE_PATH + '/dark-default.xml'], function(xhr)
{
// Adds bundle text to resources
mxResources.parse(xhr[0].getText());
// Configures the default graph theme
var themes = new Object();
themes[Graph.prototype.defaultThemeName] = xhr[1].getDocumentElement();
// Main
new EditorUi(new Editor(urlParams['chrome'] == '0', themes));
}, function()
{
document.body.innerHTML = '<center style="margin-top:10%;">Error loading resource files. Please check browser console.</center>';
});
})();
</script>
</body>
</html>