@ -0,0 +1,539 @@
|
||||
/* Logo 字体 */
|
||||
@font-face {
|
||||
font-family: "iconfont logo";
|
||||
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
|
||||
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
|
||||
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
|
||||
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
|
||||
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
|
||||
}
|
||||
|
||||
.logo {
|
||||
font-family: "iconfont logo";
|
||||
font-size: 160px;
|
||||
font-style: normal;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
/* tabs */
|
||||
.nav-tabs {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.nav-tabs .nav-more {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
height: 42px;
|
||||
line-height: 42px;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
#tabs {
|
||||
border-bottom: 1px solid #eee;
|
||||
}
|
||||
|
||||
#tabs li {
|
||||
cursor: pointer;
|
||||
width: 100px;
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
text-align: center;
|
||||
font-size: 16px;
|
||||
border-bottom: 2px solid transparent;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
margin-bottom: -1px;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
|
||||
#tabs .active {
|
||||
border-bottom-color: #f00;
|
||||
color: #222;
|
||||
}
|
||||
|
||||
.tab-container .content {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* 页面布局 */
|
||||
.main {
|
||||
padding: 30px 100px;
|
||||
width: 960px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.main .logo {
|
||||
color: #333;
|
||||
text-align: left;
|
||||
margin-bottom: 30px;
|
||||
line-height: 1;
|
||||
height: 110px;
|
||||
margin-top: -50px;
|
||||
overflow: hidden;
|
||||
*zoom: 1;
|
||||
}
|
||||
|
||||
.main .logo a {
|
||||
font-size: 160px;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.helps {
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
.helps pre {
|
||||
padding: 20px;
|
||||
margin: 10px 0;
|
||||
border: solid 1px #e7e1cd;
|
||||
background-color: #fffdef;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.icon_lists {
|
||||
width: 100% !important;
|
||||
overflow: hidden;
|
||||
*zoom: 1;
|
||||
}
|
||||
|
||||
.icon_lists li {
|
||||
width: 100px;
|
||||
margin-bottom: 10px;
|
||||
margin-right: 20px;
|
||||
text-align: center;
|
||||
list-style: none !important;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.icon_lists li .code-name {
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.icon_lists .icon {
|
||||
display: block;
|
||||
height: 100px;
|
||||
line-height: 100px;
|
||||
font-size: 42px;
|
||||
margin: 10px auto;
|
||||
color: #333;
|
||||
-webkit-transition: font-size 0.25s linear, width 0.25s linear;
|
||||
-moz-transition: font-size 0.25s linear, width 0.25s linear;
|
||||
transition: font-size 0.25s linear, width 0.25s linear;
|
||||
}
|
||||
|
||||
.icon_lists .icon:hover {
|
||||
font-size: 100px;
|
||||
}
|
||||
|
||||
.icon_lists .svg-icon {
|
||||
/* 通过设置 font-size 来改变图标大小 */
|
||||
width: 1em;
|
||||
/* 图标和文字相邻时,垂直对齐 */
|
||||
vertical-align: -0.15em;
|
||||
/* 通过设置 color 来改变 SVG 的颜色/fill */
|
||||
fill: currentColor;
|
||||
/* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
|
||||
normalize.css 中也包含这行 */
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.icon_lists li .name,
|
||||
.icon_lists li .code-name {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
/* markdown 样式 */
|
||||
.markdown {
|
||||
color: #666;
|
||||
font-size: 14px;
|
||||
line-height: 1.8;
|
||||
}
|
||||
|
||||
.highlight {
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.markdown img {
|
||||
vertical-align: middle;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.markdown h1 {
|
||||
color: #404040;
|
||||
font-weight: 500;
|
||||
line-height: 40px;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.markdown h2,
|
||||
.markdown h3,
|
||||
.markdown h4,
|
||||
.markdown h5,
|
||||
.markdown h6 {
|
||||
color: #404040;
|
||||
margin: 1.6em 0 0.6em 0;
|
||||
font-weight: 500;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.markdown h1 {
|
||||
font-size: 28px;
|
||||
}
|
||||
|
||||
.markdown h2 {
|
||||
font-size: 22px;
|
||||
}
|
||||
|
||||
.markdown h3 {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.markdown h4 {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.markdown h5 {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.markdown h6 {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.markdown hr {
|
||||
height: 1px;
|
||||
border: 0;
|
||||
background: #e9e9e9;
|
||||
margin: 16px 0;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.markdown p {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
.markdown>p,
|
||||
.markdown>blockquote,
|
||||
.markdown>.highlight,
|
||||
.markdown>ol,
|
||||
.markdown>ul {
|
||||
width: 80%;
|
||||
}
|
||||
|
||||
.markdown ul>li {
|
||||
list-style: circle;
|
||||
}
|
||||
|
||||
.markdown>ul li,
|
||||
.markdown blockquote ul>li {
|
||||
margin-left: 20px;
|
||||
padding-left: 4px;
|
||||
}
|
||||
|
||||
.markdown>ul li p,
|
||||
.markdown>ol li p {
|
||||
margin: 0.6em 0;
|
||||
}
|
||||
|
||||
.markdown ol>li {
|
||||
list-style: decimal;
|
||||
}
|
||||
|
||||
.markdown>ol li,
|
||||
.markdown blockquote ol>li {
|
||||
margin-left: 20px;
|
||||
padding-left: 4px;
|
||||
}
|
||||
|
||||
.markdown code {
|
||||
margin: 0 3px;
|
||||
padding: 0 5px;
|
||||
background: #eee;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.markdown strong,
|
||||
.markdown b {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.markdown>table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0px;
|
||||
empty-cells: show;
|
||||
border: 1px solid #e9e9e9;
|
||||
width: 95%;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.markdown>table th {
|
||||
white-space: nowrap;
|
||||
color: #333;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.markdown>table th,
|
||||
.markdown>table td {
|
||||
border: 1px solid #e9e9e9;
|
||||
padding: 8px 16px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.markdown>table th {
|
||||
background: #F7F7F7;
|
||||
}
|
||||
|
||||
.markdown blockquote {
|
||||
font-size: 90%;
|
||||
color: #999;
|
||||
border-left: 4px solid #e9e9e9;
|
||||
padding-left: 0.8em;
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
.markdown blockquote p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.markdown .anchor {
|
||||
opacity: 0;
|
||||
transition: opacity 0.3s ease;
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
.markdown .waiting {
|
||||
color: #ccc;
|
||||
}
|
||||
|
||||
.markdown h1:hover .anchor,
|
||||
.markdown h2:hover .anchor,
|
||||
.markdown h3:hover .anchor,
|
||||
.markdown h4:hover .anchor,
|
||||
.markdown h5:hover .anchor,
|
||||
.markdown h6:hover .anchor {
|
||||
opacity: 1;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.markdown>br,
|
||||
.markdown>p>br {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
|
||||
.hljs {
|
||||
display: block;
|
||||
background: white;
|
||||
padding: 0.5em;
|
||||
color: #333333;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
.hljs-comment,
|
||||
.hljs-meta {
|
||||
color: #969896;
|
||||
}
|
||||
|
||||
.hljs-string,
|
||||
.hljs-variable,
|
||||
.hljs-template-variable,
|
||||
.hljs-strong,
|
||||
.hljs-emphasis,
|
||||
.hljs-quote {
|
||||
color: #df5000;
|
||||
}
|
||||
|
||||
.hljs-keyword,
|
||||
.hljs-selector-tag,
|
||||
.hljs-type {
|
||||
color: #a71d5d;
|
||||
}
|
||||
|
||||
.hljs-literal,
|
||||
.hljs-symbol,
|
||||
.hljs-bullet,
|
||||
.hljs-attribute {
|
||||
color: #0086b3;
|
||||
}
|
||||
|
||||
.hljs-section,
|
||||
.hljs-name {
|
||||
color: #63a35c;
|
||||
}
|
||||
|
||||
.hljs-tag {
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.hljs-title,
|
||||
.hljs-attr,
|
||||
.hljs-selector-id,
|
||||
.hljs-selector-class,
|
||||
.hljs-selector-attr,
|
||||
.hljs-selector-pseudo {
|
||||
color: #795da3;
|
||||
}
|
||||
|
||||
.hljs-addition {
|
||||
color: #55a532;
|
||||
background-color: #eaffea;
|
||||
}
|
||||
|
||||
.hljs-deletion {
|
||||
color: #bd2c00;
|
||||
background-color: #ffecec;
|
||||
}
|
||||
|
||||
.hljs-link {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/* 代码高亮 */
|
||||
/* PrismJS 1.15.0
|
||||
https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
|
||||
/**
|
||||
* prism.js default theme for JavaScript, CSS and HTML
|
||||
* Based on dabblet (http://dabblet.com)
|
||||
* @author Lea Verou
|
||||
*/
|
||||
code[class*="language-"],
|
||||
pre[class*="language-"] {
|
||||
color: black;
|
||||
background: none;
|
||||
text-shadow: 0 1px white;
|
||||
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
|
||||
text-align: left;
|
||||
white-space: pre;
|
||||
word-spacing: normal;
|
||||
word-break: normal;
|
||||
word-wrap: normal;
|
||||
line-height: 1.5;
|
||||
|
||||
-moz-tab-size: 4;
|
||||
-o-tab-size: 4;
|
||||
tab-size: 4;
|
||||
|
||||
-webkit-hyphens: none;
|
||||
-moz-hyphens: none;
|
||||
-ms-hyphens: none;
|
||||
hyphens: none;
|
||||
}
|
||||
|
||||
pre[class*="language-"]::-moz-selection,
|
||||
pre[class*="language-"] ::-moz-selection,
|
||||
code[class*="language-"]::-moz-selection,
|
||||
code[class*="language-"] ::-moz-selection {
|
||||
text-shadow: none;
|
||||
background: #b3d4fc;
|
||||
}
|
||||
|
||||
pre[class*="language-"]::selection,
|
||||
pre[class*="language-"] ::selection,
|
||||
code[class*="language-"]::selection,
|
||||
code[class*="language-"] ::selection {
|
||||
text-shadow: none;
|
||||
background: #b3d4fc;
|
||||
}
|
||||
|
||||
@media print {
|
||||
|
||||
code[class*="language-"],
|
||||
pre[class*="language-"] {
|
||||
text-shadow: none;
|
||||
}
|
||||
}
|
||||
|
||||
/* Code blocks */
|
||||
pre[class*="language-"] {
|
||||
padding: 1em;
|
||||
margin: .5em 0;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
:not(pre)>code[class*="language-"],
|
||||
pre[class*="language-"] {
|
||||
background: #f5f2f0;
|
||||
}
|
||||
|
||||
/* Inline code */
|
||||
:not(pre)>code[class*="language-"] {
|
||||
padding: .1em;
|
||||
border-radius: .3em;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
.token.comment,
|
||||
.token.prolog,
|
||||
.token.doctype,
|
||||
.token.cdata {
|
||||
color: slategray;
|
||||
}
|
||||
|
||||
.token.punctuation {
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.namespace {
|
||||
opacity: .7;
|
||||
}
|
||||
|
||||
.token.property,
|
||||
.token.tag,
|
||||
.token.boolean,
|
||||
.token.number,
|
||||
.token.constant,
|
||||
.token.symbol,
|
||||
.token.deleted {
|
||||
color: #905;
|
||||
}
|
||||
|
||||
.token.selector,
|
||||
.token.attr-name,
|
||||
.token.string,
|
||||
.token.char,
|
||||
.token.builtin,
|
||||
.token.inserted {
|
||||
color: #690;
|
||||
}
|
||||
|
||||
.token.operator,
|
||||
.token.entity,
|
||||
.token.url,
|
||||
.language-css .token.string,
|
||||
.style .token.string {
|
||||
color: #9a6e3a;
|
||||
background: hsla(0, 0%, 100%, .5);
|
||||
}
|
||||
|
||||
.token.atrule,
|
||||
.token.attr-value,
|
||||
.token.keyword {
|
||||
color: #07a;
|
||||
}
|
||||
|
||||
.token.function,
|
||||
.token.class-name {
|
||||
color: #DD4A68;
|
||||
}
|
||||
|
||||
.token.regex,
|
||||
.token.important,
|
||||
.token.variable {
|
||||
color: #e90;
|
||||
}
|
||||
|
||||
.token.important,
|
||||
.token.bold {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.token.italic {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.token.entity {
|
||||
cursor: help;
|
||||
}
|
||||
@ -0,0 +1,47 @@
|
||||
@font-face {
|
||||
font-family: "iconfont"; /* Project id 4268538 */
|
||||
src: url('iconfont.woff2?t=1695807712922') format('woff2'),
|
||||
url('iconfont.woff?t=1695807712922') format('woff'),
|
||||
url('iconfont.ttf?t=1695807712922') format('truetype');
|
||||
}
|
||||
|
||||
.iconfont {
|
||||
font-family: "iconfont" !important;
|
||||
font-size: 16px;
|
||||
font-style: normal;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
.icon-weishezhi:before {
|
||||
content: "\eb7d";
|
||||
}
|
||||
|
||||
.icon-yiwancheng6:before {
|
||||
content: "\ebeb";
|
||||
}
|
||||
|
||||
.icon-xianchangqueren:before {
|
||||
content: "\ebe1";
|
||||
}
|
||||
|
||||
.icon-a-302:before {
|
||||
content: "\ebe5";
|
||||
}
|
||||
|
||||
.icon-shiyongaed:before {
|
||||
content: "\ebe7";
|
||||
}
|
||||
|
||||
.icon-panduanhujiu:before {
|
||||
content: "\ebe6";
|
||||
}
|
||||
|
||||
.icon-shangbianxiantiao:before {
|
||||
content: "\ebe9";
|
||||
}
|
||||
|
||||
.icon-xiebianjiantou:before {
|
||||
content: "\ebe8";
|
||||
}
|
||||
|
||||
@ -0,0 +1,65 @@
|
||||
{
|
||||
"id": "4268538",
|
||||
"name": "新的",
|
||||
"font_family": "iconfont",
|
||||
"css_prefix_text": "icon-",
|
||||
"description": "",
|
||||
"glyphs": [
|
||||
{
|
||||
"icon_id": "36340001",
|
||||
"name": "未设置",
|
||||
"font_class": "weishezhi",
|
||||
"unicode": "eb7d",
|
||||
"unicode_decimal": 60285
|
||||
},
|
||||
{
|
||||
"icon_id": "37534363",
|
||||
"name": "已完成",
|
||||
"font_class": "yiwancheng6",
|
||||
"unicode": "ebeb",
|
||||
"unicode_decimal": 60395
|
||||
},
|
||||
{
|
||||
"icon_id": "37515253",
|
||||
"name": "现场确认",
|
||||
"font_class": "xianchangqueren",
|
||||
"unicode": "ebe1",
|
||||
"unicode_decimal": 60385
|
||||
},
|
||||
{
|
||||
"icon_id": "37516649",
|
||||
"name": "30:2",
|
||||
"font_class": "a-302",
|
||||
"unicode": "ebe5",
|
||||
"unicode_decimal": 60389
|
||||
},
|
||||
{
|
||||
"icon_id": "37516792",
|
||||
"name": "使用aed",
|
||||
"font_class": "shiyongaed",
|
||||
"unicode": "ebe7",
|
||||
"unicode_decimal": 60391
|
||||
},
|
||||
{
|
||||
"icon_id": "37516797",
|
||||
"name": "判断呼救",
|
||||
"font_class": "panduanhujiu",
|
||||
"unicode": "ebe6",
|
||||
"unicode_decimal": 60390
|
||||
},
|
||||
{
|
||||
"icon_id": "37516808",
|
||||
"name": "上边线条",
|
||||
"font_class": "shangbianxiantiao",
|
||||
"unicode": "ebe9",
|
||||
"unicode_decimal": 60393
|
||||
},
|
||||
{
|
||||
"icon_id": "37516809",
|
||||
"name": "斜边箭头",
|
||||
"font_class": "xiebianjiantou",
|
||||
"unicode": "ebe8",
|
||||
"unicode_decimal": 60392
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 6.1 KiB |
|
After Width: | Height: | Size: 5.8 KiB |
|
After Width: | Height: | Size: 6.6 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
@ -0,0 +1,251 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>心脏救助过程</title>
|
||||
<link rel="stylesheet" href="./iconfont/iconfont.css">
|
||||
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
|
||||
|
||||
<style>
|
||||
html,body{
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.process_wrap {
|
||||
max-width: 393px;
|
||||
max-height: 410px;
|
||||
overflow: auto hidden;
|
||||
scrollbar-width: none; /* Firefox */
|
||||
-ms-overflow-style: none; /* IE 10+ */
|
||||
}
|
||||
|
||||
.process_wrap::-webkit-scrollbar {
|
||||
display:none !important;
|
||||
width:0;
|
||||
height:0 !important;
|
||||
color:transparent;
|
||||
}
|
||||
|
||||
.process_title {
|
||||
font-size: 16px;
|
||||
color: #333;
|
||||
margin-top: 20px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.step {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 20px 40px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.step p {
|
||||
color: #999;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.step .mask {
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
border-radius: 50%;
|
||||
background-color: rgba(0, 0, 0, 0.4)
|
||||
}
|
||||
|
||||
.hovericon {
|
||||
border-radius: 50%;
|
||||
box-shadow: 0px 10px 10px 0px rgb(209, 232, 243);
|
||||
}
|
||||
|
||||
.icon {
|
||||
display: inline-block;
|
||||
height: 80px;
|
||||
}
|
||||
|
||||
.wancheng {
|
||||
position: absolute;
|
||||
width: 32px;
|
||||
z-index: 999;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
margin-top: -50px;
|
||||
margin-left: -16px;
|
||||
}
|
||||
|
||||
#line1,
|
||||
#line2 {
|
||||
width: 112px;
|
||||
margin: 10px;
|
||||
margin-top: -60px;
|
||||
color: rgb(235, 238, 240);
|
||||
}
|
||||
|
||||
.hoverline-ver {
|
||||
color: rgb(176, 184, 200);
|
||||
}
|
||||
|
||||
#line_slant {
|
||||
width: 112px;
|
||||
/* margin:0 auto; */
|
||||
margin-left:140px;
|
||||
color: rgb(235, 238, 240);
|
||||
transform: translate(-8px, -80px);
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.colorBlue {
|
||||
color: #3061D0 !important;
|
||||
}
|
||||
|
||||
.disabled {
|
||||
cursor:not-allowed !important;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="process_wrap">
|
||||
<div class="process_title">救助过程</div>
|
||||
<div>
|
||||
<div class="step">
|
||||
<div id="xianchangqueren" style="position:relative;" key="1">
|
||||
<img src="./images/finish.png" class="wancheng hidden">
|
||||
<span class="mask"></span>
|
||||
<img src="./images/xianchangqueren.png" width='80' class="icon">
|
||||
<p>第一步<br />现场安全</p>
|
||||
</div>
|
||||
<div id="line1">
|
||||
<i class="iconfont icon-shangbianxiantiao line-ver"></i>
|
||||
</div>
|
||||
<div id="panduanhujiu" style="position:relative;" key="2">
|
||||
<img src="./images/finish.png" class="wancheng hidden">
|
||||
<span class="mask"></span>
|
||||
<img src="./images/panduanhujiu.png" width='80' class="icon">
|
||||
<p>第二步<br />判断呼救</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="line_slant">
|
||||
<i class="iconfont icon-xiebianjiantou line-ver" style="font-size:88px"></i>
|
||||
</div>
|
||||
<div class="step" style="transform: translateY(-93px);">
|
||||
<div id="xinzangfusu" style="position:relative;" key="3">
|
||||
<img src="./images/finish.png" class="wancheng hidden">
|
||||
<span class="mask"></span>
|
||||
<img src="./images/xinzangfusu.png" width="80" class="icon">
|
||||
<p>第三步<br />心脏复苏</p>
|
||||
</div>
|
||||
<div id="line2">
|
||||
<i class="iconfont icon-shangbianxiantiao line-ver"></i>
|
||||
</div>
|
||||
<div id="shiyongaed" style="position:relative;" key="4">
|
||||
<img src="./images/finish.png" class="wancheng hidden">
|
||||
<span class="mask"></span>
|
||||
<img src="./images/shiyongaed.png" width="80" class="icon">
|
||||
<p>第四步<br />使用AED</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
|
||||
let elems = document.querySelectorAll('div[key]');
|
||||
|
||||
const getIdentifier = () => {
|
||||
// const url = window.location.href;
|
||||
// let identifier = url.substr(url.lastIndexOf('/') + 1);
|
||||
// if (identifier.indexOf('?') !== -1) {
|
||||
// identifier = identifier.substr(0, identifier.indexOf('?'))
|
||||
// }
|
||||
return window.top.location.pathname.split("/").pop();
|
||||
}
|
||||
|
||||
const handleElements = () => {
|
||||
for (let i = 0; i < elems?.length; i++) {
|
||||
const el = elems[i];
|
||||
const key = el.getAttribute("key")
|
||||
data?.map(item => {
|
||||
if (key == item?.position) {
|
||||
|
||||
if(data?.[item?.position - 2]?.status == 2 || item?.status == 2 || item?.position == 1){
|
||||
if(data?.[item?.position - 2]?.status == 2 && item?.status != 2){ //防止绑定两次相同的点击事件
|
||||
el.addEventListener("click", function () {
|
||||
window.top.location.href = `https://educoder.net/tasks/${item?.identifier}`
|
||||
})
|
||||
}
|
||||
el.style.cursor="pointer";
|
||||
el.addEventListener("mouseover",function(){
|
||||
el.getElementsByClassName("mask")[0].classList.add("hidden")
|
||||
el.getElementsByTagName('p')[0].classList.add("colorBlue")
|
||||
el.getElementsByClassName("icon")[0].classList.add("hovericon")
|
||||
})
|
||||
el.addEventListener("mouseout",function(){
|
||||
if(getIdentifier() != item?.identifier){
|
||||
el.getElementsByClassName("mask")[0].classList.remove("hidden")
|
||||
el.getElementsByTagName('p')[0].classList.remove("colorBlue")
|
||||
}
|
||||
el.getElementsByClassName("icon")[0].classList.remove("hovericon")
|
||||
})
|
||||
}
|
||||
else {
|
||||
el.getElementsByTagName('span')[0].classList.add("disabled")
|
||||
el.getElementsByTagName('span')[0].setAttribute("title","需通过前置步骤才能进入")
|
||||
el.getElementsByTagName('p')[0].classList.add("disabled")
|
||||
el.getElementsByTagName('p')[0].setAttribute("title","需通过前置步骤才能进入")
|
||||
}
|
||||
|
||||
if(getIdentifier() == item?.identifier && data?.[item?.position - 2]?.status == 2){
|
||||
if(item?.position == 2){
|
||||
document.getElementById("line1")?.getElementsByClassName("line-ver")[0].classList.add("hoverline-ver")
|
||||
}
|
||||
if(item?.position == 3){
|
||||
document.getElementById("line_slant")?.getElementsByClassName("line-ver")[0].classList.add("hoverline-ver")
|
||||
}
|
||||
if(item?.position == 4){
|
||||
document.getElementById("line2")?.getElementsByClassName("line-ver")[0].classList.add("hoverline-ver")
|
||||
}
|
||||
}
|
||||
if (item?.finished_time) {
|
||||
el.addEventListener("click", function () {
|
||||
window.top.location.href = `https://educoder.net/tasks/${item?.identifier}`
|
||||
})
|
||||
el.style.cursor="pointer";
|
||||
const wanchengIcon = el.getElementsByClassName("wancheng")[0]
|
||||
wanchengIcon.classList.remove("hidden")
|
||||
}
|
||||
if (getIdentifier() == item?.identifier) {
|
||||
const mask = el.getElementsByClassName("mask")[0]
|
||||
mask.classList.add("hidden")
|
||||
const desc = el.getElementsByTagName('p')[0]
|
||||
desc.classList.add("colorBlue")
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
const getData=()=>{
|
||||
const id = JSON.parse(sessionStorage.tasksData).myshixun.identifier
|
||||
axios.get("https://data.educoder.net/api/myshixuns/"+ id +"/challenges.json", {
|
||||
withCredentials: true
|
||||
}).then(function (res) {
|
||||
data = res?.data || []
|
||||
handleElements()
|
||||
})
|
||||
}
|
||||
|
||||
let data = [];
|
||||
getData();
|
||||
// window.addEventListener('message', getData, false);
|
||||
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@ -0,0 +1,26 @@
|
||||
<script>
|
||||
function setCookie(cname, cvalue, exdays) {
|
||||
// exdays = exdays || 30;
|
||||
var d = new Date();
|
||||
d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);
|
||||
var expires = 'expires=' + d.toUTCString();
|
||||
document.cookie =
|
||||
cname +
|
||||
'=' +
|
||||
cvalue +
|
||||
'; ' +
|
||||
expires +
|
||||
';domain='+( document.domain.replace("www.",""))+';path=/;SameSite=None;secure';
|
||||
}
|
||||
|
||||
window.addEventListener("message",
|
||||
function (e) {
|
||||
if (e.data.type === "cookie") {
|
||||
var cookies = e.data.data.split(";")
|
||||
cookies.map(function (item) {
|
||||
var i = item.split("=");
|
||||
setCookie(i[0],i[1],30)
|
||||
})
|
||||
}
|
||||
}, false);
|
||||
</script>
|
||||
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 35 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 6.1 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 4.7 KiB |
|
After Width: | Height: | Size: 4.7 KiB |
|
After Width: | Height: | Size: 4.8 KiB |
|
After Width: | Height: | Size: 5.1 KiB |
|
After Width: | Height: | Size: 6.4 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 92 KiB |
|
After Width: | Height: | Size: 94 KiB |
|
After Width: | Height: | Size: 4.9 KiB |
|
After Width: | Height: | Size: 4.9 KiB |
|
After Width: | Height: | Size: 4.8 KiB |
|
After Width: | Height: | Size: 4.8 KiB |
|
After Width: | Height: | Size: 5.3 KiB |
|
After Width: | Height: | Size: 5.0 KiB |
|
After Width: | Height: | Size: 5.0 KiB |
|
After Width: | Height: | Size: 4.8 KiB |
|
After Width: | Height: | Size: 407 KiB |
@ -0,0 +1,657 @@
|
||||
"use strict";
|
||||
/*
|
||||
* Copyright (C) 1998-2023 by Northwoods Software Corporation. All Rights Reserved.
|
||||
*/
|
||||
|
||||
/*
|
||||
* This is an extension and not part of the main GoJS library.
|
||||
* Note that the API for this class may change with any version, even point releases.
|
||||
* If you intend to use an extension in production, you should copy the code to your own source directory.
|
||||
* Extensions can be found in the GoJS kit under the extensions or extensionsJSM folders.
|
||||
* See the Extensions intro page (https://gojs.net/latest/intro/extensions.html) for more information.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends CommandHandler
|
||||
* @class
|
||||
* This CommandHandler class allows the user to position selected Parts in a diagram
|
||||
* relative to the first part selected, in addition to overriding the doKeyDown method
|
||||
* of the CommandHandler for handling the arrow keys in additional manners.
|
||||
* <p>
|
||||
* Typical usage:
|
||||
* <pre>
|
||||
* new go.Diagram("myDiagramDiv",
|
||||
* {
|
||||
* commandHandler: $(DrawCommandHandler),
|
||||
* . . .
|
||||
* }
|
||||
* )
|
||||
* </pre>
|
||||
* or:
|
||||
* <pre>
|
||||
* myDiagram.commandHandler = new DrawCommandHandler();
|
||||
* </pre>
|
||||
*/
|
||||
function DrawCommandHandler() {
|
||||
go.CommandHandler.call(this);
|
||||
this._arrowKeyBehavior = "move";
|
||||
this._pasteOffset = new go.Point(10, 10);
|
||||
this._lastPasteOffset = new go.Point(0, 0);
|
||||
}
|
||||
go.Diagram.inherit(DrawCommandHandler, go.CommandHandler);
|
||||
|
||||
/**
|
||||
* This controls whether or not the user can invoke the {@link #alignLeft}, {@link #alignRight},
|
||||
* {@link #alignTop}, {@link #alignBottom}, {@link #alignCenterX}, {@link #alignCenterY} commands.
|
||||
* @this {DrawCommandHandler}
|
||||
* @return {boolean}
|
||||
* This returns true:
|
||||
* if the diagram is not {@link Diagram#isReadOnly},
|
||||
* if the model is not {@link Model#isReadOnly}, and
|
||||
* if there are at least two selected {@link Part}s.
|
||||
*/
|
||||
DrawCommandHandler.prototype.canAlignSelection = function() {
|
||||
var diagram = this.diagram;
|
||||
if (diagram === null || diagram.isReadOnly || diagram.isModelReadOnly) return false;
|
||||
if (diagram.selection.count < 2) return false;
|
||||
return true;
|
||||
};
|
||||
|
||||
/**
|
||||
* Aligns selected parts along the left-most edge of the left-most part.
|
||||
* @this {DrawCommandHandler}
|
||||
*/
|
||||
DrawCommandHandler.prototype.alignLeft = function() {
|
||||
var diagram = this.diagram;
|
||||
diagram.startTransaction("aligning left");
|
||||
var minPosition = Infinity;
|
||||
diagram.selection.each(function(current) {
|
||||
if (current instanceof go.Link) return; // skips over go.Link
|
||||
minPosition = Math.min(current.position.x, minPosition);
|
||||
});
|
||||
diagram.selection.each(function(current) {
|
||||
if (current instanceof go.Link) return; // skips over go.Link
|
||||
current.move(new go.Point(minPosition, current.position.y));
|
||||
});
|
||||
diagram.commitTransaction("aligning left");
|
||||
};
|
||||
|
||||
/**
|
||||
* Aligns selected parts at the right-most edge of the right-most part.
|
||||
* @this {DrawCommandHandler}
|
||||
*/
|
||||
DrawCommandHandler.prototype.alignRight = function() {
|
||||
var diagram = this.diagram;
|
||||
diagram.startTransaction("aligning right");
|
||||
var maxPosition = -Infinity;
|
||||
diagram.selection.each(function(current) {
|
||||
if (current instanceof go.Link) return; // skips over go.Link
|
||||
var rightSideLoc = current.actualBounds.x + current.actualBounds.width;
|
||||
maxPosition = Math.max(rightSideLoc, maxPosition);
|
||||
});
|
||||
diagram.selection.each(function(current) {
|
||||
if (current instanceof go.Link) return; // skips over go.Link
|
||||
current.move(new go.Point(maxPosition - current.actualBounds.width, current.position.y));
|
||||
});
|
||||
diagram.commitTransaction("aligning right");
|
||||
};
|
||||
|
||||
/**
|
||||
* Aligns selected parts at the top-most edge of the top-most part.
|
||||
* @this {DrawCommandHandler}
|
||||
*/
|
||||
DrawCommandHandler.prototype.alignTop = function() {
|
||||
var diagram = this.diagram;
|
||||
diagram.startTransaction("alignTop");
|
||||
var minPosition = Infinity;
|
||||
diagram.selection.each(function(current) {
|
||||
if (current instanceof go.Link) return; // skips over go.Link
|
||||
minPosition = Math.min(current.position.y, minPosition);
|
||||
});
|
||||
diagram.selection.each(function(current) {
|
||||
if (current instanceof go.Link) return; // skips over go.Link
|
||||
current.move(new go.Point(current.position.x, minPosition));
|
||||
});
|
||||
diagram.commitTransaction("alignTop");
|
||||
};
|
||||
|
||||
/**
|
||||
* Aligns selected parts at the bottom-most edge of the bottom-most part.
|
||||
* @this {DrawCommandHandler}
|
||||
*/
|
||||
DrawCommandHandler.prototype.alignBottom = function() {
|
||||
var diagram = this.diagram;
|
||||
diagram.startTransaction("aligning bottom");
|
||||
var maxPosition = -Infinity;
|
||||
diagram.selection.each(function(current) {
|
||||
if (current instanceof go.Link) return; // skips over go.Link
|
||||
var bottomSideLoc = current.actualBounds.y + current.actualBounds.height;
|
||||
maxPosition = Math.max(bottomSideLoc, maxPosition);
|
||||
});
|
||||
diagram.selection.each(function(current) {
|
||||
if (current instanceof go.Link) return; // skips over go.Link
|
||||
current.move(new go.Point(current.actualBounds.x, maxPosition - current.actualBounds.height));
|
||||
});
|
||||
diagram.commitTransaction("aligning bottom");
|
||||
};
|
||||
|
||||
/**
|
||||
* Aligns selected parts at the x-value of the center point of the first selected part.
|
||||
* @this {DrawCommandHandler}
|
||||
*/
|
||||
DrawCommandHandler.prototype.alignCenterX = function() {
|
||||
var diagram = this.diagram;
|
||||
var firstSelection = diagram.selection.first();
|
||||
if (!firstSelection) return;
|
||||
diagram.startTransaction("aligning Center X");
|
||||
var centerX = firstSelection.actualBounds.x + firstSelection.actualBounds.width / 2;
|
||||
diagram.selection.each(function(current) {
|
||||
if (current instanceof go.Link) return; // skips over go.Link
|
||||
current.move(new go.Point(centerX - current.actualBounds.width / 2, current.actualBounds.y));
|
||||
});
|
||||
diagram.commitTransaction("aligning Center X");
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Aligns selected parts at the y-value of the center point of the first selected part.
|
||||
* @this {DrawCommandHandler}
|
||||
*/
|
||||
DrawCommandHandler.prototype.alignCenterY = function() {
|
||||
var diagram = this.diagram;
|
||||
var firstSelection = diagram.selection.first();
|
||||
if (!firstSelection) return;
|
||||
diagram.startTransaction("aligning Center Y");
|
||||
var centerY = firstSelection.actualBounds.y + firstSelection.actualBounds.height / 2;
|
||||
diagram.selection.each(function(current) {
|
||||
if (current instanceof go.Link) return; // skips over go.Link
|
||||
current.move(new go.Point(current.actualBounds.x, centerY - current.actualBounds.height / 2));
|
||||
});
|
||||
diagram.commitTransaction("aligning Center Y");
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Aligns selected parts top-to-bottom in order of the order selected.
|
||||
* Distance between parts can be specified. Default distance is 0.
|
||||
* @this {DrawCommandHandler}
|
||||
* @param {number} distance
|
||||
*/
|
||||
DrawCommandHandler.prototype.alignColumn = function(distance) {
|
||||
var diagram = this.diagram;
|
||||
diagram.startTransaction("align Column");
|
||||
if (distance === undefined) distance = 0; // for aligning edge to edge
|
||||
distance = parseFloat(distance);
|
||||
var selectedParts = new Array();
|
||||
diagram.selection.each(function(current) {
|
||||
if (current instanceof go.Link) return; // skips over go.Link
|
||||
selectedParts.push(current);
|
||||
});
|
||||
for (var i = 0; i < selectedParts.length - 1; i++) {
|
||||
var current = selectedParts[i];
|
||||
// adds distance specified between parts
|
||||
var curBottomSideLoc = current.actualBounds.y + current.actualBounds.height + distance;
|
||||
var next = selectedParts[i + 1];
|
||||
next.move(new go.Point(current.actualBounds.x, curBottomSideLoc));
|
||||
}
|
||||
diagram.commitTransaction("align Column");
|
||||
};
|
||||
|
||||
/**
|
||||
* Aligns selected parts left-to-right in order of the order selected.
|
||||
* Distance between parts can be specified. Default distance is 0.
|
||||
* @this {DrawCommandHandler}
|
||||
* @param {number} distance
|
||||
*/
|
||||
DrawCommandHandler.prototype.alignRow = function(distance) {
|
||||
if (distance === undefined) distance = 0; // for aligning edge to edge
|
||||
distance = parseFloat(distance);
|
||||
var diagram = this.diagram;
|
||||
diagram.startTransaction("align Row");
|
||||
var selectedParts = new Array();
|
||||
diagram.selection.each(function(current) {
|
||||
if (current instanceof go.Link) return; // skips over go.Link
|
||||
selectedParts.push(current);
|
||||
});
|
||||
for (var i = 0; i < selectedParts.length - 1; i++) {
|
||||
var current = selectedParts[i];
|
||||
// adds distance specified between parts
|
||||
var curRightSideLoc = current.actualBounds.x + current.actualBounds.width + distance;
|
||||
var next = selectedParts[i + 1];
|
||||
next.move(new go.Point(curRightSideLoc, current.actualBounds.y));
|
||||
}
|
||||
diagram.commitTransaction("align Row");
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* This controls whether or not the user can invoke the {@link #rotate} command.
|
||||
* @this {DrawCommandHandler}
|
||||
* @param {number=} angle the positive (clockwise) or negative (counter-clockwise) change in the rotation angle of each Part, in degrees.
|
||||
* @return {boolean}
|
||||
* This returns true:
|
||||
* if the diagram is not {@link Diagram#isReadOnly},
|
||||
* if the model is not {@link Model#isReadOnly}, and
|
||||
* if there is at least one selected {@link Part}.
|
||||
*/
|
||||
DrawCommandHandler.prototype.canRotate = function(number) {
|
||||
var diagram = this.diagram;
|
||||
if (diagram === null || diagram.isReadOnly || diagram.isModelReadOnly) return false;
|
||||
if (diagram.selection.count < 1) return false;
|
||||
return true;
|
||||
};
|
||||
|
||||
/**
|
||||
* Change the angle of the parts connected with the given part. This is in the command handler
|
||||
* so it can be easily accessed for the purpose of creating commands that change the rotation of a part.
|
||||
* @this {DrawCommandHandler}
|
||||
* @param {number=} angle the positive (clockwise) or negative (counter-clockwise) change in the rotation angle of each Part, in degrees.
|
||||
*/
|
||||
DrawCommandHandler.prototype.rotate = function(angle) {
|
||||
if (angle === undefined) angle = 90;
|
||||
var diagram = this.diagram;
|
||||
diagram.startTransaction("rotate " + angle.toString());
|
||||
var diagram = this.diagram;
|
||||
diagram.selection.each(function(current) {
|
||||
if (current instanceof go.Link || current instanceof go.Group) return; // skips over Links and Groups
|
||||
current.angle += angle;
|
||||
});
|
||||
diagram.commitTransaction("rotate " + angle.toString());
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Change the z-ordering of selected parts to pull them forward, in front of all other parts
|
||||
* in their respective layers.
|
||||
* All unselected parts in each layer with a selected Part with a non-numeric {@link Part#zOrder} will get a zOrder of zero.
|
||||
* @this {DrawCommandHandler}
|
||||
*/
|
||||
DrawCommandHandler.prototype.pullToFront = function() {
|
||||
var diagram = this.diagram;
|
||||
diagram.startTransaction("pullToFront");
|
||||
// find the affected Layers
|
||||
var layers = new go.Map();
|
||||
diagram.selection.each(function(part) {
|
||||
layers.set(part.layer, 0);
|
||||
});
|
||||
// find the maximum zOrder in each Layer
|
||||
layers.iteratorKeys.each(function(layer) {
|
||||
var max = 0;
|
||||
layer.parts.each(function(part) {
|
||||
if (part.isSelected) return;
|
||||
var z = part.zOrder;
|
||||
if (isNaN(z)) {
|
||||
part.zOrder = 0;
|
||||
} else {
|
||||
max = Math.max(max, z);
|
||||
}
|
||||
});
|
||||
layers.set(layer, max);
|
||||
});
|
||||
// assign each selected Part.zOrder to the computed value for each Layer
|
||||
diagram.selection.each(function(part) {
|
||||
DrawCommandHandler._assignZOrder(part, layers.get(part.layer) + 1);
|
||||
});
|
||||
diagram.commitTransaction("pullToFront");
|
||||
};
|
||||
|
||||
/**
|
||||
* Change the z-ordering of selected parts to push them backward, behind of all other parts
|
||||
* in their respective layers.
|
||||
* All unselected parts in each layer with a selected Part with a non-numeric {@link Part#zOrder} will get a zOrder of zero.
|
||||
* @this {DrawCommandHandler}
|
||||
*/
|
||||
DrawCommandHandler.prototype.pushToBack = function() {
|
||||
var diagram = this.diagram;
|
||||
diagram.startTransaction("pushToBack");
|
||||
// find the affected Layers
|
||||
var layers = new go.Map();
|
||||
diagram.selection.each(function(part) {
|
||||
layers.set(part.layer, 0);
|
||||
});
|
||||
// find the minimum zOrder in each Layer
|
||||
layers.iteratorKeys.each(function(layer) {
|
||||
var min = 0;
|
||||
layer.parts.each(function(part) {
|
||||
if (part.isSelected) return;
|
||||
var z = part.zOrder;
|
||||
if (isNaN(z)) {
|
||||
part.zOrder = 0;
|
||||
} else {
|
||||
min = Math.min(min, z);
|
||||
}
|
||||
});
|
||||
layers.set(layer, min);
|
||||
});
|
||||
// assign each selected Part.zOrder to the computed value for each Layer
|
||||
diagram.selection.each(function(part) {
|
||||
DrawCommandHandler._assignZOrder(part,
|
||||
// make sure a group's nested nodes are also behind everything else
|
||||
layers.get(part.layer) - 1 - DrawCommandHandler._findGroupDepth(part));
|
||||
});
|
||||
diagram.commitTransaction("pushToBack");
|
||||
};
|
||||
|
||||
DrawCommandHandler._assignZOrder = function(part, z, root) {
|
||||
if (root === undefined) root = part;
|
||||
if (part.layer === root.layer) part.zOrder = z;
|
||||
if (part instanceof go.Group) {
|
||||
part.memberParts.each(function(m) {
|
||||
DrawCommandHandler._assignZOrder(m, z+1, root);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
DrawCommandHandler._findGroupDepth = function(part) {
|
||||
if (part instanceof go.Group) {
|
||||
var d = 0;
|
||||
part.memberParts.each(function(m) {
|
||||
d = Math.max(d, DrawCommandHandler._findGroupDepth(m));
|
||||
});
|
||||
return d+1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* This implements custom behaviors for arrow key keyboard events.
|
||||
* Set {@link #arrowKeyBehavior} to "select", "move" (the default), "scroll" (the standard behavior), or "none"
|
||||
* to affect the behavior when the user types an arrow key.
|
||||
* @this {DrawCommandHandler}*/
|
||||
DrawCommandHandler.prototype.doKeyDown = function() {
|
||||
var diagram = this.diagram;
|
||||
if (diagram === null) return;
|
||||
var e = diagram.lastInput;
|
||||
|
||||
// determines the function of the arrow keys
|
||||
if (e.key === "Up" || e.key === "Down" || e.key === "Left" || e.key === "Right") {
|
||||
var behavior = this.arrowKeyBehavior;
|
||||
if (behavior === "none") {
|
||||
// no-op
|
||||
return;
|
||||
} else if (behavior === "select") {
|
||||
this._arrowKeySelect();
|
||||
return;
|
||||
} else if (behavior === "move") {
|
||||
this._arrowKeyMove();
|
||||
return;
|
||||
} else if (behavior === "tree") {
|
||||
this._arrowKeyTree();
|
||||
return;
|
||||
}
|
||||
// otherwise drop through to get the default scrolling behavior
|
||||
}
|
||||
|
||||
// otherwise still does all standard commands
|
||||
go.CommandHandler.prototype.doKeyDown.call(this);
|
||||
};
|
||||
|
||||
/**
|
||||
* Collects in an Array all of the non-Link Parts currently in the Diagram.
|
||||
* @this {DrawCommandHandler}
|
||||
* @return {Array}
|
||||
*/
|
||||
DrawCommandHandler.prototype._getAllParts = function() {
|
||||
var allParts = new Array();
|
||||
this.diagram.nodes.each(function(node) { allParts.push(node); });
|
||||
this.diagram.parts.each(function(part) { allParts.push(part); });
|
||||
// note that this ignores Links
|
||||
return allParts;
|
||||
};
|
||||
|
||||
/**
|
||||
* To be called when arrow keys should move the Diagram.selection.
|
||||
* @this {DrawCommandHandler}
|
||||
*/
|
||||
DrawCommandHandler.prototype._arrowKeyMove = function() {
|
||||
var diagram = this.diagram;
|
||||
var e = diagram.lastInput;
|
||||
// moves all selected parts in the specified direction
|
||||
var vdistance = 0;
|
||||
var hdistance = 0;
|
||||
// if control is being held down, move pixel by pixel. Else, moves by grid cell size
|
||||
if (e.control || e.meta) {
|
||||
vdistance = 1;
|
||||
hdistance = 1;
|
||||
} else if (diagram.grid !== null) {
|
||||
var cellsize = diagram.grid.gridCellSize;
|
||||
hdistance = cellsize.width;
|
||||
vdistance = cellsize.height;
|
||||
}
|
||||
diagram.startTransaction("arrowKeyMove");
|
||||
diagram.selection.each(function(part) {
|
||||
if (e.key === "Up") {
|
||||
part.move(new go.Point(part.actualBounds.x, part.actualBounds.y - vdistance));
|
||||
} else if (e.key === "Down") {
|
||||
part.move(new go.Point(part.actualBounds.x, part.actualBounds.y + vdistance));
|
||||
} else if (e.key === "Left") {
|
||||
part.move(new go.Point(part.actualBounds.x - hdistance, part.actualBounds.y));
|
||||
} else if (e.key === "Right") {
|
||||
part.move(new go.Point(part.actualBounds.x + hdistance, part.actualBounds.y));
|
||||
}
|
||||
});
|
||||
diagram.commitTransaction("arrowKeyMove");
|
||||
};
|
||||
|
||||
/**
|
||||
* To be called when arrow keys should change selection.
|
||||
* @this {DrawCommandHandler}
|
||||
*/
|
||||
DrawCommandHandler.prototype._arrowKeySelect = function() {
|
||||
var diagram = this.diagram;
|
||||
var e = diagram.lastInput;
|
||||
// with a part selected, arrow keys change the selection
|
||||
// arrow keys + shift selects the additional part in the specified direction
|
||||
// arrow keys + control toggles the selection of the additional part
|
||||
var nextPart = null;
|
||||
if (e.key === "Up") {
|
||||
nextPart = this._findNearestPartTowards(270);
|
||||
} else if (e.key === "Down") {
|
||||
nextPart = this._findNearestPartTowards(90);
|
||||
} else if (e.key === "Left") {
|
||||
nextPart = this._findNearestPartTowards(180);
|
||||
} else if (e.key === "Right") {
|
||||
nextPart = this._findNearestPartTowards(0);
|
||||
}
|
||||
if (nextPart !== null) {
|
||||
if (e.shift) {
|
||||
nextPart.isSelected = true;
|
||||
} else if (e.control || e.meta) {
|
||||
nextPart.isSelected = !nextPart.isSelected;
|
||||
} else {
|
||||
diagram.select(nextPart);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Finds the nearest selectable Part in the specified direction, based on their center points.
|
||||
* if it doesn't find anything, it just returns the current Part.
|
||||
* @this {DrawCommandHandler}
|
||||
* @param {number} dir the direction, in degrees
|
||||
* @return {Part} the closest Part found in the given direction
|
||||
*/
|
||||
DrawCommandHandler.prototype._findNearestPartTowards = function(dir) {
|
||||
var originalPart = this.diagram.selection.first();
|
||||
if (originalPart === null) return null;
|
||||
var originalPoint = originalPart.actualBounds.center;
|
||||
var allParts = this._getAllParts();
|
||||
var closestDistance = Infinity;
|
||||
var closest = originalPart; // if no parts meet the criteria, the same part remains selected
|
||||
|
||||
for (var i = 0; i < allParts.length; i++) {
|
||||
var nextPart = allParts[i];
|
||||
if (nextPart === originalPart) continue; // skips over currently selected part
|
||||
if (!nextPart.canSelect()) continue;
|
||||
var nextPoint = nextPart.actualBounds.center;
|
||||
var angle = originalPoint.directionPoint(nextPoint);
|
||||
var anglediff = this._angleCloseness(angle, dir);
|
||||
if (anglediff <= 45) { // if this part's center is within the desired direction's sector,
|
||||
var distance = originalPoint.distanceSquaredPoint(nextPoint);
|
||||
distance *= 1+Math.sin(anglediff*Math.PI/180); // the more different from the intended angle, the further it is
|
||||
if (distance < closestDistance) { // and if it's closer than any other part,
|
||||
closestDistance = distance; // remember it as a better choice
|
||||
closest = nextPart;
|
||||
}
|
||||
}
|
||||
}
|
||||
return closest;
|
||||
};
|
||||
|
||||
/**
|
||||
* @this {DrawCommandHandler}
|
||||
* @param {number} a
|
||||
* @param {number} dir
|
||||
* @return {number}
|
||||
*/
|
||||
DrawCommandHandler.prototype._angleCloseness = function(a, dir) {
|
||||
return Math.min(Math.abs(dir - a), Math.min(Math.abs(dir + 360 - a), Math.abs(dir - 360 - a)));
|
||||
};
|
||||
|
||||
/**
|
||||
* To be called when arrow keys should change the selected node in a tree and expand or collapse subtrees.
|
||||
* @this {DrawCommandHandler}
|
||||
*/
|
||||
DrawCommandHandler.prototype._arrowKeyTree = function() {
|
||||
var diagram = this.diagram;
|
||||
var selected = diagram.selection.first();
|
||||
if (!(selected instanceof go.Node)) return;
|
||||
|
||||
var e = diagram.lastInput;
|
||||
if (e.key === "Right") {
|
||||
if (selected.isTreeLeaf) {
|
||||
// no-op
|
||||
} else if (!selected.isTreeExpanded) {
|
||||
if (diagram.commandHandler.canExpandTree(selected)) {
|
||||
diagram.commandHandler.expandTree(selected); // expands the tree
|
||||
}
|
||||
} else { // already expanded -- select the first child node
|
||||
var first = this._sortTreeChildrenByY(selected).first();
|
||||
if (first !== null) diagram.select(first);
|
||||
}
|
||||
} else if (e.key === "Left") {
|
||||
if (!selected.isTreeLeaf && selected.isTreeExpanded) {
|
||||
if (diagram.commandHandler.canCollapseTree(selected)) {
|
||||
diagram.commandHandler.collapseTree(selected); // collapses the tree
|
||||
}
|
||||
} else { // either a leaf or is already collapsed -- select the parent node
|
||||
var parent = selected.findTreeParentNode();
|
||||
if (parent !== null) diagram.select(parent);
|
||||
}
|
||||
} else if (e.key === "Up") {
|
||||
var parent = selected.findTreeParentNode();
|
||||
if (parent !== null) {
|
||||
var list = this._sortTreeChildrenByY(parent);
|
||||
var idx = list.indexOf(selected);
|
||||
if (idx > 0) { // if there is a previous sibling
|
||||
var prev = list.elt(idx - 1);
|
||||
// keep looking at the last child until it's a leaf or collapsed
|
||||
while (prev !== null && prev.isTreeExpanded && !prev.isTreeLeaf) {
|
||||
var children = this._sortTreeChildrenByY(prev);
|
||||
prev = children.last();
|
||||
}
|
||||
if (prev !== null) diagram.select(prev);
|
||||
} else { // no previous sibling -- select parent
|
||||
diagram.select(parent);
|
||||
}
|
||||
}
|
||||
} else if (e.key === "Down") {
|
||||
// if at an expanded parent, select the first child
|
||||
if (selected.isTreeExpanded && !selected.isTreeLeaf) {
|
||||
var first = this._sortTreeChildrenByY(selected).first();
|
||||
if (first !== null) diagram.select(first);
|
||||
} else {
|
||||
while (selected !== null) {
|
||||
var parent = selected.findTreeParentNode();
|
||||
if (parent === null) break;
|
||||
var list = this._sortTreeChildrenByY(parent);
|
||||
var idx = list.indexOf(selected);
|
||||
if (idx < list.length - 1) { // select next lower node
|
||||
diagram.select(list.elt(idx + 1));
|
||||
break;
|
||||
} else { // already at bottom of list of children
|
||||
selected = parent;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// make sure the selection is now in the viewport, but not necessarily centered
|
||||
var sel = diagram.selection.first();
|
||||
if (sel !== null) diagram.scrollToRect(sel.actualBounds);
|
||||
}
|
||||
|
||||
DrawCommandHandler.prototype._sortTreeChildrenByY = function(node) {
|
||||
var list = new go.List().addAll(node.findTreeChildrenNodes());
|
||||
list.sort(function(a, b) {
|
||||
var aloc = a.location;
|
||||
var bloc = b.location;
|
||||
if (aloc.y < bloc.y) return -1;
|
||||
if (aloc.y > bloc.y) return 1;
|
||||
if (aloc.x < bloc.x) return -1;
|
||||
if (aloc.x > bloc.x) return 1;
|
||||
return 0;
|
||||
});
|
||||
return list;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Reset the last offset for pasting.
|
||||
* @this {DrawCommandHandler}
|
||||
* @param {Iterable.<Part>} coll a collection of {@link Part}s.
|
||||
*/
|
||||
DrawCommandHandler.prototype.copyToClipboard = function(coll) {
|
||||
go.CommandHandler.prototype.copyToClipboard.call(this, coll);
|
||||
this._lastPasteOffset.set(this.pasteOffset);
|
||||
};
|
||||
|
||||
/**
|
||||
* Paste from the clipboard with an offset incremented on each paste, and reset when copied.
|
||||
* @this {DrawCommandHandler}
|
||||
* @return {Set.<Part>} a collection of newly pasted {@link Part}s
|
||||
*/
|
||||
DrawCommandHandler.prototype.pasteFromClipboard = function() {
|
||||
var coll = go.CommandHandler.prototype.pasteFromClipboard.call(this);
|
||||
this.diagram.moveParts(coll, this._lastPasteOffset);
|
||||
this._lastPasteOffset.add(this.pasteOffset);
|
||||
return coll;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Gets or sets the arrow key behavior. Possible values are "move", "select", "scroll", and "tree".
|
||||
* The default value is "move".
|
||||
* @name DrawCommandHandler#arrowKeyBehavior
|
||||
|
||||
* @return {string}
|
||||
*/
|
||||
Object.defineProperty(DrawCommandHandler.prototype, "arrowKeyBehavior", {
|
||||
get: function() { return this._arrowKeyBehavior; },
|
||||
set: function(val) {
|
||||
if (val !== "move" && val !== "select" && val !== "scroll" && val !== "tree" && val !== "none") {
|
||||
throw new Error("DrawCommandHandler.arrowKeyBehavior must be either \"move\", \"select\", \"scroll\", \"tree\", or \"none\", not: " + val);
|
||||
}
|
||||
this._arrowKeyBehavior = val;
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Gets or sets the offset at which each repeated pasteSelection() puts the new copied parts from the clipboard.
|
||||
* The default value is (10,10).
|
||||
* @name DrawCommandHandler#pasteOffset
|
||||
|
||||
* @return {Point}
|
||||
*/
|
||||
Object.defineProperty(DrawCommandHandler.prototype, "pasteOffset", {
|
||||
get: function() { return this._pasteOffset; },
|
||||
set: function(val) {
|
||||
if (!(val instanceof go.Point)) throw new Error("DrawCommandHandler.pasteOffset must be a Point, not: " + val);
|
||||
this._pasteOffset.set(val);
|
||||
}
|
||||
});
|
||||
|
||||
export default DrawCommandHandler
|
||||
@ -0,0 +1,37 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>verilog</title>
|
||||
</head>
|
||||
|
||||
<body style="width:100%;height:100%;overflow: scroll;text-align: center; padding: 30px;">
|
||||
<script src="./default.js" type="text/javascript"></script>
|
||||
<script src="./js.js" type="text/javascript"></script>
|
||||
<script>
|
||||
window.addEventListener("message", function (type) {
|
||||
if (type.data.data) {
|
||||
try {
|
||||
var script = document.createElement("script");
|
||||
script.type = "WaveDrom"
|
||||
script.innerText = JSON.stringify(type.data.data)
|
||||
document.body.appendChild(script)
|
||||
WaveDrom.ProcessAll()
|
||||
} catch (e) {
|
||||
// debugger
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
// { signal : [
|
||||
// { name: "clk", wave: "p......" },
|
||||
// { name: "bus", wave: "x.34.5x", data: "head body tail" },
|
||||
// { name: "wire", wave: "0.1..0." },
|
||||
// ]}
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@ -0,0 +1,87 @@
|
||||
var lockEvent = false;
|
||||
; (function (open) {
|
||||
XMLHttpRequest.prototype.open = function (method, url, async, user, password) {
|
||||
this.addEventListener("load", function () {
|
||||
if (method === "PUT") {
|
||||
// if(!lockEvent)
|
||||
try {
|
||||
if(url.indexOf("/api/workspaces/default") > -1){
|
||||
return
|
||||
}
|
||||
} catch (error) {
|
||||
|
||||
};
|
||||
window.top.postMessage('jupytermessage', '*');
|
||||
}
|
||||
});
|
||||
open.call(this, method, url, async, user, password);
|
||||
};
|
||||
})(XMLHttpRequest.prototype.open);
|
||||
|
||||
(function (fetch) {
|
||||
window.fetch = function (url, options) {
|
||||
options = options || {}
|
||||
return fetch.apply(this, arguments).then(function (response) {
|
||||
try {
|
||||
if (options.method === "PUT" || (typeof url === "object" && url.method === "PUT")) {
|
||||
// if(!lockEvent)
|
||||
try {
|
||||
if(url.url.indexOf("/api/workspaces/default") > -1){
|
||||
return
|
||||
}
|
||||
} catch (error) {
|
||||
|
||||
};
|
||||
window.top.postMessage('jupytermessage', '*');
|
||||
}
|
||||
} catch (error) {
|
||||
|
||||
}
|
||||
return response;
|
||||
});
|
||||
};
|
||||
|
||||
})(window.fetch);
|
||||
|
||||
function saveCode() {
|
||||
try {
|
||||
var elements = document.querySelectorAll('[data-command="docmanager:save"]');
|
||||
|
||||
elements.forEach(function (element) {
|
||||
element.click();
|
||||
});
|
||||
} catch (error) {
|
||||
|
||||
}
|
||||
|
||||
try {
|
||||
document.querySelector("[data-jupyter-action='jupyter-notebook:save-notebook']").click();
|
||||
} catch (error) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
var saveEvent = new KeyboardEvent('keydown', {
|
||||
key: 's',
|
||||
ctrlKey: true
|
||||
});
|
||||
|
||||
document.dispatchEvent(saveEvent);
|
||||
}
|
||||
|
||||
function onReceiveMessage(e) {
|
||||
try {
|
||||
if (e.data === 'saveCode') {
|
||||
lockEvent = true;
|
||||
saveCode()
|
||||
setTimeout(() => {
|
||||
lockEvent = false
|
||||
}, 1000)
|
||||
}
|
||||
} catch (error) {
|
||||
console.log('error:', error, e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
window.addEventListener('message', onReceiveMessage);
|
||||
@ -0,0 +1 @@
|
||||
$wnd.web3d.runAsyncCallback14("function Ayg(a){cpf.call(this,a)}\nfunction iDd(a){jDd.call(this,a,1.0E-11)}\nfunction Und(a){Qnd(a,0,a.length,null)}\nfunction dWg(a,b){return new fXg(a.s,a,(Gij(),Lhj),b)}\nfunction vJf(a,b){var c,d;d=new mnd;for(c=0;c<b.t.B.length;c++){Xmd(d,_md(b.t,c))}uJf(a,d)}\nfunction MKh(a,b,c){uYd();var d,e;d=wbf(a.dV(),b.dV());e=wbf(a.dV(),c.dV());return !eaf(d,e)}\nfunction XKh(a,b,c,d,e,f,g,h){uYd();var i,j,k,l;i=a.dV();j=b.dV();k=c.dV();l=t9e(t9e(laf(E9e(i),d/g),j,e/g),k,f/g);h.KV(l,false)}\nfunction nCd(a,b,c){var d,e;oDd(a,b);e=a.i==null?0:a.i.length;if(c.length!=e){throw Etc(new nDd(c.length,1,e,1))}for(d=0;d<e;++d){xCd(a,d,b,c[d])}}\nfunction oCd(a,b,c){var d,e;qDd(a,b);e=a.i==null||a.i[0]==null?0:a.i[0].length;if(c.length!=e){throw Etc(new nDd(1,c.length,1,e))}for(d=0;d<e;++d){xCd(a,b,d,c[d])}}\nfunction lDd(a,b){var c,d,e,f,g,h,i;h=a.i.length;if(b.g.length!=h){throw Etc(new hAd(b.g.length,h))}if(a.j){throw Etc(new NDd)}c=je(qf,u2m,5,h,15,1);for(i=0;i<h;i++){c[i]=FCd(b,a.i[i])}for(f=0;f<h;f++){d=c[f];for(g=f+1;g<h;g++){c[g]-=d*a.g[g][f]}}for(e=h-1;e>=0;e--){c[e]/=a.g[e][e];d=c[e];for(g=0;g<e;g++){c[g]-=d*a.g[g][e]}}return new JCd(c)}\nfunction uJf(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H;if(mf($wnd.Math.sqrt(9+8*b.B.length))!=$wnd.Math.sqrt(9+8*b.B.length)){a.u=false;jJf(a);return}d=mf(0.5*$wnd.Math.sqrt(8*(1+b.B.length)))-1;A=d;e=new ACd(b.B.length,b.B.length+1);t=new ACd(b.B.length,b.B.length);c=he(qf,[zbn,u2m],[20,5],15,[d+1,d+1],2);u=je(qf,u2m,5,b.B.length+1,15,1);for(g=0;g<b.B.length;g++){G=(Twd(g,b.B.length),b.B[g]).eV();H=(Twd(g,b.B.length),b.B[g]).fV();for(n=0,s=0;n<d+1;n++){for(r=0;n+r!=d+1;r++){u[s++]=$wnd.Math.pow(G,n)*$wnd.Math.pow(H,r)}}oCd(e,g,u)}D=0;v=b.B.length;do{if(D>v){v=v-A-1;if(v<2){a.u=false;jJf(a);return}e=new ACd(v,v+1);A-=1;u=je(qf,u2m,5,v+1,15,1);for(h=0;h<v;h++){G=(Twd(h,b.B.length),b.B[h]).qV();H=(Twd(h,b.B.length),b.B[h]).rV();for(n=0,s=0;n<A+1;n++){for(r=0;n+r!=A+1;r++){u[s++]=$wnd.Math.pow(G,n)*$wnd.Math.pow(H,r)}}oCd(e,h,u)}t=new ACd(v,v);D=0}B=mCd(e,D);for(i=0,o=0;i<v+1;i++){if(i==D){continue}nCd(t,o++,mCd(e,i))}++D;F=hDd(new iDd(t))}while(F.j);for(j=0;j<B.length;j++){B[j]*=-1}w=lDd(F,new ICd(B)).g;C=je(qf,u2m,5,w.length+1,15,1);for(k=0,p=0;k<C.length;k++){if(k==D-1){C[k]=1}else{C[k]=Gnj(w[p])?0:w[p];++p}}for(l=0,q=0;l<A+1;l++){for(m=0;l+m<A+1;m++){c[l][m]=C[q++]}}lJf(a,c);a.u=true;for(f=0;f<b.B.length;f++){if(!hJf(a,(Twd(f,b.B.length),b.B[f]))){a.u=false;jJf(a);return}}}\nvar F2n=')(',s4n=' and ',I4n={16:1,29:1,19:1,24:1,30:1,247:1},J4n={3:1,4:1,8:1,7:1,126:1},N4n={3:1,4:1,8:1,7:1,93:1};kuc(G5m,1,{},iDd);kuc(36,15,fsn);_.cS=function(a,b){return this.R};kuc(1679,25,Zrn);_.dQ=function(a,b){var c;c=Uof(this,a,new rrh(false));if(c.length!=1){throw Etc(Kof(this,a,a.j.B.length))}if(!cf(c[0],49)){throw Etc(Hof(this,a.q,c[0]))}return me(fe(Ndb,1),ehn,15,0,[this.u_(c[0],wtf(a))])};var Rab=xgd(1679);kuc(140,228,XEn);_.cS=function(a,b){return oYg(this,a,b)};kuc(78,15,AGn);_.cS=function(a,b){if($hd(DCh(this,(Eqg(),aqg)),'y')){return xDh(this,b)}return !this.k?NaN:this.k.wk(a)};kuc(184,15,DGn);_.cS=function(a,b){return ZDh(this,a,b)};kuc(_7m,1,{});var Wjb=xgd(_7m);eXm(Qc)(14);\n//# sourceURL=web3d-14.js\n")
|
||||
@ -0,0 +1,491 @@
|
||||
<!DOCTYPE html>
|
||||
<html dir="ltr" mozdisallowselectionprint>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||||
<meta name="google" content="notranslate">
|
||||
<title>PDF</title>
|
||||
<link rel="resource" type="application/l10n" href="locale/locale.properties">
|
||||
<script>
|
||||
var pattern = /(\w+)=([^\#&]*)/ig;
|
||||
window.parames = {};
|
||||
location.href.replace(pattern, function (attr, key, value) {
|
||||
parames[key] = decodeURI(value);
|
||||
});
|
||||
if(parames.nocredentials){
|
||||
parames.url = parames.url.indexOf("?") > -1 ? parames.url + "&nocredentials=true" : parames.url
|
||||
}
|
||||
var pdfUrl = decodeURIComponent(parames.url || "http://localhost:8000/api/attachments/4390023?disposition=inline&filesize=247403")
|
||||
</script>
|
||||
<script src="./js/pdf.js"></script>
|
||||
|
||||
<link rel="stylesheet" href="./js/viewer.css">
|
||||
|
||||
<script src="./js/viewer.js"></script>
|
||||
|
||||
</head>
|
||||
|
||||
<body tabindex="1">
|
||||
<div id="outerContainer">
|
||||
|
||||
<div id="sidebarContainer">
|
||||
<div id="toolbarSidebar">
|
||||
<div id="toolbarSidebarLeft">
|
||||
<div id="sidebarViewButtons" class="splitToolbarButton toggled" role="radiogroup">
|
||||
<button id="viewThumbnail" class="toolbarButton toggled" title="Show Thumbnails" tabindex="2"
|
||||
data-l10n-id="thumbs" role="radio" aria-checked="true" aria-controls="thumbnailView">
|
||||
<span data-l10n-id="thumbs_label">Thumbnails</span>
|
||||
</button>
|
||||
<button id="viewOutline" class="toolbarButton"
|
||||
title="Show Document Outline (double-click to expand/collapse all items)" tabindex="3"
|
||||
data-l10n-id="document_outline" role="radio" aria-checked="false" aria-controls="outlineView">
|
||||
<span data-l10n-id="document_outline_label">Document Outline</span>
|
||||
</button>
|
||||
<button id="viewAttachments" class="toolbarButton" title="Show Attachments" tabindex="4"
|
||||
data-l10n-id="attachments" role="radio" aria-checked="false" aria-controls="attachmentsView">
|
||||
<span data-l10n-id="attachments_label">Attachments</span>
|
||||
</button>
|
||||
<button id="viewLayers" class="toolbarButton"
|
||||
title="Show Layers (double-click to reset all layers to the default state)" tabindex="5"
|
||||
data-l10n-id="layers" role="radio" aria-checked="false" aria-controls="layersView">
|
||||
<span data-l10n-id="layers_label">Layers</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="toolbarSidebarRight">
|
||||
<div id="outlineOptionsContainer" class="hidden">
|
||||
<div class="verticalToolbarSeparator"></div>
|
||||
|
||||
<button id="currentOutlineItem" class="toolbarButton" disabled="disabled" title="Find Current Outline Item"
|
||||
tabindex="6" data-l10n-id="current_outline_item">
|
||||
<span data-l10n-id="current_outline_item_label">Current Outline Item</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="sidebarContent">
|
||||
<div id="thumbnailView">
|
||||
</div>
|
||||
<div id="outlineView" class="hidden">
|
||||
</div>
|
||||
<div id="attachmentsView" class="hidden">
|
||||
</div>
|
||||
<div id="layersView" class="hidden">
|
||||
</div>
|
||||
</div>
|
||||
<div id="sidebarResizer"></div>
|
||||
</div> <!-- sidebarContainer -->
|
||||
|
||||
<div id="mainContainer">
|
||||
<div class="findbar hidden doorHanger" id="findbar">
|
||||
<div id="findbarInputContainer">
|
||||
<input id="findInput" class="toolbarField" title="Find" placeholder="Find in document…" tabindex="91"
|
||||
data-l10n-id="find_input" aria-invalid="false">
|
||||
<div class="splitToolbarButton">
|
||||
<button id="findPrevious" class="toolbarButton" title="Find the previous occurrence of the phrase"
|
||||
tabindex="92" data-l10n-id="find_previous">
|
||||
<span data-l10n-id="find_previous_label">Previous</span>
|
||||
</button>
|
||||
<div class="splitToolbarButtonSeparator"></div>
|
||||
<button id="findNext" class="toolbarButton" title="Find the next occurrence of the phrase" tabindex="93"
|
||||
data-l10n-id="find_next">
|
||||
<span data-l10n-id="find_next_label">Next</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="findbarOptionsOneContainer">
|
||||
<input type="checkbox" id="findHighlightAll" class="toolbarField" tabindex="94">
|
||||
<label for="findHighlightAll" class="toolbarLabel" data-l10n-id="find_highlight">Highlight All</label>
|
||||
<input type="checkbox" id="findMatchCase" class="toolbarField" tabindex="95">
|
||||
<label for="findMatchCase" class="toolbarLabel" data-l10n-id="find_match_case_label">Match Case</label>
|
||||
</div>
|
||||
<div id="findbarOptionsTwoContainer">
|
||||
<input type="checkbox" id="findMatchDiacritics" class="toolbarField" tabindex="96">
|
||||
<label for="findMatchDiacritics" class="toolbarLabel" data-l10n-id="find_match_diacritics_label">Match
|
||||
Diacritics</label>
|
||||
<input type="checkbox" id="findEntireWord" class="toolbarField" tabindex="97">
|
||||
<label for="findEntireWord" class="toolbarLabel" data-l10n-id="find_entire_word_label">Whole Words</label>
|
||||
</div>
|
||||
|
||||
<div id="findbarMessageContainer" aria-live="polite">
|
||||
<span id="findResultsCount" class="toolbarLabel"></span>
|
||||
<span id="findMsg" class="toolbarLabel"></span>
|
||||
</div>
|
||||
</div> <!-- findbar -->
|
||||
|
||||
<div class="editorParamsToolbar hidden doorHangerRight" id="editorFreeTextParamsToolbar">
|
||||
<div class="editorParamsToolbarContainer">
|
||||
<div class="editorParamsSetter">
|
||||
<label for="editorFreeTextColor" class="editorParamsLabel"
|
||||
data-l10n-id="editor_free_text_color">Color</label>
|
||||
<input type="color" id="editorFreeTextColor" class="editorParamsColor" tabindex="100">
|
||||
</div>
|
||||
<div class="editorParamsSetter">
|
||||
<label for="editorFreeTextFontSize" class="editorParamsLabel"
|
||||
data-l10n-id="editor_free_text_size">Size</label>
|
||||
<input type="range" id="editorFreeTextFontSize" class="editorParamsSlider" value="10" min="5" max="100"
|
||||
step="1" tabindex="101">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="editorParamsToolbar hidden doorHangerRight" id="editorInkParamsToolbar">
|
||||
<div class="editorParamsToolbarContainer">
|
||||
<div class="editorParamsSetter">
|
||||
<label for="editorInkColor" class="editorParamsLabel" data-l10n-id="editor_ink_color">Color</label>
|
||||
<input type="color" id="editorInkColor" class="editorParamsColor" tabindex="102">
|
||||
</div>
|
||||
<div class="editorParamsSetter">
|
||||
<label for="editorInkThickness" class="editorParamsLabel"
|
||||
data-l10n-id="editor_ink_thickness">Thickness</label>
|
||||
<input type="range" id="editorInkThickness" class="editorParamsSlider" value="1" min="1" max="20" step="1"
|
||||
tabindex="103">
|
||||
</div>
|
||||
<div class="editorParamsSetter">
|
||||
<label for="editorInkOpacity" class="editorParamsLabel" data-l10n-id="editor_ink_opacity">Opacity</label>
|
||||
<input type="range" id="editorInkOpacity" class="editorParamsSlider" value="100" min="1" max="100" step="1"
|
||||
tabindex="104">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="secondaryToolbar" class="secondaryToolbar hidden doorHangerRight">
|
||||
<div id="secondaryToolbarButtonContainer">
|
||||
<button id="secondaryOpenFile" class="secondaryToolbarButton visibleLargeView" title="Open File" tabindex="51"
|
||||
data-l10n-id="open_file">
|
||||
<span data-l10n-id="open_file_label">Open</span>
|
||||
</button>
|
||||
|
||||
<button id="secondaryPrint" class="secondaryToolbarButton visibleMediumView" title="Print" tabindex="52"
|
||||
data-l10n-id="print">
|
||||
<span data-l10n-id="print_label">Print</span>
|
||||
</button>
|
||||
|
||||
<button id="secondaryDownload" class="secondaryToolbarButton visibleMediumView" title="Save" tabindex="53"
|
||||
data-l10n-id="save">
|
||||
<span data-l10n-id="save_label">Save</span>
|
||||
</button>
|
||||
|
||||
<div class="horizontalToolbarSeparator visibleLargeView"></div>
|
||||
|
||||
<button id="presentationMode" class="secondaryToolbarButton" title="Switch to Presentation Mode" tabindex="54"
|
||||
data-l10n-id="presentation_mode">
|
||||
<span data-l10n-id="presentation_mode_label">Presentation Mode</span>
|
||||
</button>
|
||||
|
||||
<a href="#" id="viewBookmark" class="secondaryToolbarButton" title="Current Page (View URL from Current Page)"
|
||||
tabindex="55" data-l10n-id="bookmark1">
|
||||
<span data-l10n-id="bookmark1_label">Current Page</span>
|
||||
</a>
|
||||
|
||||
<div id="viewBookmarkSeparator" class="horizontalToolbarSeparator"></div>
|
||||
|
||||
<button id="firstPage" class="secondaryToolbarButton" title="Go to First Page" tabindex="56"
|
||||
data-l10n-id="first_page">
|
||||
<span data-l10n-id="first_page_label">Go to First Page</span>
|
||||
</button>
|
||||
<button id="lastPage" class="secondaryToolbarButton" title="Go to Last Page" tabindex="57"
|
||||
data-l10n-id="last_page">
|
||||
<span data-l10n-id="last_page_label">Go to Last Page</span>
|
||||
</button>
|
||||
|
||||
<div class="horizontalToolbarSeparator"></div>
|
||||
|
||||
<button id="pageRotateCw" class="secondaryToolbarButton" title="Rotate Clockwise" tabindex="58"
|
||||
data-l10n-id="page_rotate_cw">
|
||||
<span data-l10n-id="page_rotate_cw_label">Rotate Clockwise</span>
|
||||
</button>
|
||||
<button id="pageRotateCcw" class="secondaryToolbarButton" title="Rotate Counterclockwise" tabindex="59"
|
||||
data-l10n-id="page_rotate_ccw">
|
||||
<span data-l10n-id="page_rotate_ccw_label">Rotate Counterclockwise</span>
|
||||
</button>
|
||||
|
||||
<div class="horizontalToolbarSeparator"></div>
|
||||
|
||||
<div id="cursorToolButtons" role="radiogroup">
|
||||
<button id="cursorSelectTool" class="secondaryToolbarButton toggled" title="Enable Text Selection Tool"
|
||||
tabindex="60" data-l10n-id="cursor_text_select_tool" role="radio" aria-checked="true">
|
||||
<span data-l10n-id="cursor_text_select_tool_label">Text Selection Tool</span>
|
||||
</button>
|
||||
<button id="cursorHandTool" class="secondaryToolbarButton" title="Enable Hand Tool" tabindex="61"
|
||||
data-l10n-id="cursor_hand_tool" role="radio" aria-checked="false">
|
||||
<span data-l10n-id="cursor_hand_tool_label">Hand Tool</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="horizontalToolbarSeparator"></div>
|
||||
|
||||
<div id="scrollModeButtons" role="radiogroup">
|
||||
<button id="scrollPage" class="secondaryToolbarButton" title="Use Page Scrolling" tabindex="62"
|
||||
data-l10n-id="scroll_page" role="radio" aria-checked="false">
|
||||
<span data-l10n-id="scroll_page_label">Page Scrolling</span>
|
||||
</button>
|
||||
<button id="scrollVertical" class="secondaryToolbarButton toggled" title="Use Vertical Scrolling"
|
||||
tabindex="63" data-l10n-id="scroll_vertical" role="radio" aria-checked="true">
|
||||
<span data-l10n-id="scroll_vertical_label">Vertical Scrolling</span>
|
||||
</button>
|
||||
<button id="scrollHorizontal" class="secondaryToolbarButton" title="Use Horizontal Scrolling" tabindex="64"
|
||||
data-l10n-id="scroll_horizontal" role="radio" aria-checked="false">
|
||||
<span data-l10n-id="scroll_horizontal_label">Horizontal Scrolling</span>
|
||||
</button>
|
||||
<button id="scrollWrapped" class="secondaryToolbarButton" title="Use Wrapped Scrolling" tabindex="65"
|
||||
data-l10n-id="scroll_wrapped" role="radio" aria-checked="false">
|
||||
<span data-l10n-id="scroll_wrapped_label">Wrapped Scrolling</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="horizontalToolbarSeparator"></div>
|
||||
|
||||
<div id="spreadModeButtons" role="radiogroup">
|
||||
<button id="spreadNone" class="secondaryToolbarButton toggled" title="Do not join page spreads"
|
||||
tabindex="66" data-l10n-id="spread_none" role="radio" aria-checked="true">
|
||||
<span data-l10n-id="spread_none_label">No Spreads</span>
|
||||
</button>
|
||||
<button id="spreadOdd" class="secondaryToolbarButton"
|
||||
title="Join page spreads starting with odd-numbered pages" tabindex="67" data-l10n-id="spread_odd"
|
||||
role="radio" aria-checked="false">
|
||||
<span data-l10n-id="spread_odd_label">Odd Spreads</span>
|
||||
</button>
|
||||
<button id="spreadEven" class="secondaryToolbarButton"
|
||||
title="Join page spreads starting with even-numbered pages" tabindex="68" data-l10n-id="spread_even"
|
||||
role="radio" aria-checked="false">
|
||||
<span data-l10n-id="spread_even_label">Even Spreads</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="horizontalToolbarSeparator"></div>
|
||||
|
||||
<button id="documentProperties" class="secondaryToolbarButton" title="Document Properties…" tabindex="69"
|
||||
data-l10n-id="document_properties" aria-controls="documentPropertiesDialog">
|
||||
<span data-l10n-id="document_properties_label">Document Properties…</span>
|
||||
</button>
|
||||
</div>
|
||||
</div> <!-- secondaryToolbar -->
|
||||
|
||||
<div class="toolbar">
|
||||
<div id="toolbarContainer">
|
||||
<div id="toolbarViewer">
|
||||
<div id="toolbarViewerLeft">
|
||||
<button id="sidebarToggle" class="toolbarButton" title="Toggle Sidebar" tabindex="11"
|
||||
data-l10n-id="toggle_sidebar" aria-expanded="false" aria-controls="sidebarContainer">
|
||||
<span data-l10n-id="toggle_sidebar_label">Toggle Sidebar</span>
|
||||
</button>
|
||||
<div class="toolbarButtonSpacer"></div>
|
||||
<button id="viewFind" class="toolbarButton" title="Find in Document" tabindex="12" data-l10n-id="findbar"
|
||||
aria-expanded="false" aria-controls="findbar">
|
||||
<span data-l10n-id="findbar_label">Find</span>
|
||||
</button>
|
||||
<div class="splitToolbarButton hiddenSmallView">
|
||||
<button class="toolbarButton" title="Previous Page" id="previous" tabindex="13" data-l10n-id="previous">
|
||||
<span data-l10n-id="previous_label">Previous</span>
|
||||
</button>
|
||||
<div class="splitToolbarButtonSeparator"></div>
|
||||
<button class="toolbarButton" title="Next Page" id="next" tabindex="14" data-l10n-id="next">
|
||||
<span data-l10n-id="next_label">Next</span>
|
||||
</button>
|
||||
</div>
|
||||
<input type="number" id="pageNumber" class="toolbarField" title="Page" value="1" min="1" tabindex="15"
|
||||
data-l10n-id="page" autocomplete="off">
|
||||
<span id="numPages" class="toolbarLabel"></span>
|
||||
</div>
|
||||
<div id="toolbarViewerRight" style="display:none;">
|
||||
<button id="download" class="toolbarButton hiddenMediumView" title="Save" tabindex="33"
|
||||
data-l10n-id="save">
|
||||
<span data-l10n-id="save_label">Save</span>
|
||||
</button>
|
||||
</div>
|
||||
<div id="toolbarViewerMiddle">
|
||||
<div class="splitToolbarButton">
|
||||
<button id="zoomOut" class="toolbarButton" title="Zoom Out" tabindex="21" data-l10n-id="zoom_out">
|
||||
<span data-l10n-id="zoom_out_label">Zoom Out</span>
|
||||
</button>
|
||||
<div class="splitToolbarButtonSeparator"></div>
|
||||
<button id="zoomIn" class="toolbarButton" title="Zoom In" tabindex="22" data-l10n-id="zoom_in">
|
||||
<span data-l10n-id="zoom_in_label">Zoom In</span>
|
||||
</button>
|
||||
</div>
|
||||
<div style="display:none !important">
|
||||
<button id="openFile" class="toolbarButton hiddenLargeView" title="Open File" tabindex="31"
|
||||
data-l10n-id="open_file">
|
||||
<span data-l10n-id="open_file_label">Open</span>
|
||||
</button>
|
||||
|
||||
<button id="print" class="toolbarButton hiddenMediumView" title="Print" tabindex="32"
|
||||
data-l10n-id="print">
|
||||
<span data-l10n-id="print_label">Print</span>
|
||||
</button>
|
||||
<div class="verticalToolbarSeparator hiddenMediumView"></div>
|
||||
|
||||
<div id="editorModeButtons" class="splitToolbarButton toggled" role="radiogroup">
|
||||
<button id="editorFreeText" class="toolbarButton" disabled="disabled" title="Text" role="radio"
|
||||
aria-checked="false" tabindex="34" data-l10n-id="editor_free_text2">
|
||||
<span data-l10n-id="editor_free_text2_label">Text</span>
|
||||
</button>
|
||||
<button id="editorInk" class="toolbarButton" disabled="disabled" title="Draw" role="radio"
|
||||
aria-checked="false" tabindex="35" data-l10n-id="editor_ink2">
|
||||
<span data-l10n-id="editor_ink2_label">Draw</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div id="editorModeSeparator" class="verticalToolbarSeparator"></div>
|
||||
|
||||
<button id="secondaryToolbarToggle" class="toolbarButton" title="Tools" tabindex="48"
|
||||
data-l10n-id="tools" aria-expanded="false" aria-controls="secondaryToolbar">
|
||||
<span data-l10n-id="tools_label">Tools</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<span id="scaleSelectContainer" class="dropdownToolbarButton">
|
||||
<select id="scaleSelect" title="Zoom" tabindex="23" data-l10n-id="zoom">
|
||||
<option id="pageAutoOption" title="" value="auto" selected="selected" data-l10n-id="page_scale_auto">
|
||||
Automatic Zoom</option>
|
||||
<option id="pageActualOption" title="" value="page-actual" data-l10n-id="page_scale_actual">Actual
|
||||
Size</option>
|
||||
<option id="pageFitOption" title="" value="page-fit" data-l10n-id="page_scale_fit">Page Fit</option>
|
||||
<option id="pageWidthOption" title="" value="page-width" data-l10n-id="page_scale_width">Page Width
|
||||
</option>
|
||||
<option id="customScaleOption" title="" value="custom" disabled="disabled" hidden="true"></option>
|
||||
<option title="" value="0.5" data-l10n-id="page_scale_percent" data-l10n-args='{ "scale": 50 }'>50%
|
||||
</option>
|
||||
<option title="" value="0.75" data-l10n-id="page_scale_percent" data-l10n-args='{ "scale": 75 }'>75%
|
||||
</option>
|
||||
<option title="" value="1" data-l10n-id="page_scale_percent" data-l10n-args='{ "scale": 100 }'>100%
|
||||
</option>
|
||||
<option title="" value="1.25" data-l10n-id="page_scale_percent" data-l10n-args='{ "scale": 125 }'>125%
|
||||
</option>
|
||||
<option title="" value="1.5" data-l10n-id="page_scale_percent" data-l10n-args='{ "scale": 150 }'>150%
|
||||
</option>
|
||||
<option title="" value="2" data-l10n-id="page_scale_percent" data-l10n-args='{ "scale": 200 }'>200%
|
||||
</option>
|
||||
<option title="" value="3" data-l10n-id="page_scale_percent" data-l10n-args='{ "scale": 300 }'>300%
|
||||
</option>
|
||||
<option title="" value="4" data-l10n-id="page_scale_percent" data-l10n-args='{ "scale": 400 }'>400%
|
||||
</option>
|
||||
</select>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div id="loadingBar">
|
||||
<div class="progress">
|
||||
<div class="glimmer">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="viewerContainer" tabindex="0">
|
||||
<div id="viewer" class="pdfViewer"></div>
|
||||
</div>
|
||||
</div> <!-- mainContainer -->
|
||||
|
||||
<div id="dialogContainer">
|
||||
<dialog id="passwordDialog">
|
||||
<div class="row">
|
||||
<label for="password" id="passwordText" data-l10n-id="password_label">Enter the password to open this PDF
|
||||
file:</label>
|
||||
</div>
|
||||
<div class="row">
|
||||
<input type="password" id="password" class="toolbarField">
|
||||
</div>
|
||||
<div class="buttonRow">
|
||||
<button id="passwordCancel" class="dialogButton"><span data-l10n-id="password_cancel">Cancel</span></button>
|
||||
<button id="passwordSubmit" class="dialogButton"><span data-l10n-id="password_ok">OK</span></button>
|
||||
</div>
|
||||
</dialog>
|
||||
<dialog id="documentPropertiesDialog">
|
||||
<div class="row">
|
||||
<span id="fileNameLabel" data-l10n-id="document_properties_file_name">File name:</span>
|
||||
<p id="fileNameField" aria-labelledby="fileNameLabel">-</p>
|
||||
</div>
|
||||
<div class="row">
|
||||
<span id="fileSizeLabel" data-l10n-id="document_properties_file_size">File size:</span>
|
||||
<p id="fileSizeField" aria-labelledby="fileSizeLabel">-</p>
|
||||
</div>
|
||||
<div class="separator"></div>
|
||||
<div class="row">
|
||||
<span id="titleLabel" data-l10n-id="document_properties_title">Title:</span>
|
||||
<p id="titleField" aria-labelledby="titleLabel">-</p>
|
||||
</div>
|
||||
<div class="row">
|
||||
<span id="authorLabel" data-l10n-id="document_properties_author">Author:</span>
|
||||
<p id="authorField" aria-labelledby="authorLabel">-</p>
|
||||
</div>
|
||||
<div class="row">
|
||||
<span id="subjectLabel" data-l10n-id="document_properties_subject">Subject:</span>
|
||||
<p id="subjectField" aria-labelledby="subjectLabel">-</p>
|
||||
</div>
|
||||
<div class="row">
|
||||
<span id="keywordsLabel" data-l10n-id="document_properties_keywords">Keywords:</span>
|
||||
<p id="keywordsField" aria-labelledby="keywordsLabel">-</p>
|
||||
</div>
|
||||
<div class="row">
|
||||
<span id="creationDateLabel" data-l10n-id="document_properties_creation_date">Creation Date:</span>
|
||||
<p id="creationDateField" aria-labelledby="creationDateLabel">-</p>
|
||||
</div>
|
||||
<div class="row">
|
||||
<span id="modificationDateLabel" data-l10n-id="document_properties_modification_date">Modification
|
||||
Date:</span>
|
||||
<p id="modificationDateField" aria-labelledby="modificationDateLabel">-</p>
|
||||
</div>
|
||||
<div class="row">
|
||||
<span id="creatorLabel" data-l10n-id="document_properties_creator">Creator:</span>
|
||||
<p id="creatorField" aria-labelledby="creatorLabel">-</p>
|
||||
</div>
|
||||
<div class="separator"></div>
|
||||
<div class="row">
|
||||
<span id="producerLabel" data-l10n-id="document_properties_producer">PDF Producer:</span>
|
||||
<p id="producerField" aria-labelledby="producerLabel">-</p>
|
||||
</div>
|
||||
<div class="row">
|
||||
<span id="versionLabel" data-l10n-id="document_properties_version">PDF Version:</span>
|
||||
<p id="versionField" aria-labelledby="versionLabel">-</p>
|
||||
</div>
|
||||
<div class="row">
|
||||
<span id="pageCountLabel" data-l10n-id="document_properties_page_count">Page Count:</span>
|
||||
<p id="pageCountField" aria-labelledby="pageCountLabel">-</p>
|
||||
</div>
|
||||
<div class="row">
|
||||
<span id="pageSizeLabel" data-l10n-id="document_properties_page_size">Page Size:</span>
|
||||
<p id="pageSizeField" aria-labelledby="pageSizeLabel">-</p>
|
||||
</div>
|
||||
<div class="separator"></div>
|
||||
<div class="row">
|
||||
<span id="linearizedLabel" data-l10n-id="document_properties_linearized">Fast Web View:</span>
|
||||
<p id="linearizedField" aria-labelledby="linearizedLabel">-</p>
|
||||
</div>
|
||||
<div class="buttonRow">
|
||||
<button id="documentPropertiesClose" class="dialogButton"><span
|
||||
data-l10n-id="document_properties_close">Close</span></button>
|
||||
</div>
|
||||
</dialog>
|
||||
<dialog id="printServiceDialog" style="min-width: 200px;">
|
||||
<div class="row">
|
||||
<span data-l10n-id="print_progress_message">Preparing document for printing…</span>
|
||||
</div>
|
||||
<div class="row">
|
||||
<progress value="0" max="100"></progress>
|
||||
<span data-l10n-id="print_progress_percent" data-l10n-args='{ "progress": 0 }'
|
||||
class="relative-progress">0%</span>
|
||||
</div>
|
||||
<div class="buttonRow">
|
||||
<button id="printCancel" class="dialogButton"><span data-l10n-id="print_progress_close">Cancel</span></button>
|
||||
</div>
|
||||
</dialog>
|
||||
</div> <!-- dialogContainer -->
|
||||
|
||||
</div> <!-- outerContainer -->
|
||||
<div id="printContainer"></div>
|
||||
|
||||
<input type="file" id="fileInput" class="hidden">
|
||||
<script>
|
||||
if (parames.disabledDownload !== "true") {
|
||||
document.getElementById("toolbarViewerRight").style.display = "block"
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
After Width: | Height: | Size: 2.5 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 915 B |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 681 B |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 701 B |
|
After Width: | Height: | Size: 682 B |
|
After Width: | Height: | Size: 927 B |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 570 B |
|
After Width: | Height: | Size: 671 B |
|
After Width: | Height: | Size: 332 B |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 958 B |
|
After Width: | Height: | Size: 472 B |