Skip to content
GitLab
菜单
项目
群组
代码片段
/
帮助
帮助
支持
社区论坛
快捷键
?
提交反馈
登录/注册
切换导航
菜单
打开侧边栏
wenxiangdong
drawing-panel
提交
288f8303
提交
288f8303
编辑于
9月 16, 2018
作者:
wenxiangdong
浏览文件
识别算法
上级
d2ef6a5e
变更
67
Hide whitespace changes
Inline
Side-by-side
drawing-panel/index.html
浏览文件 @
288f8303
...
...
@@ -37,6 +37,7 @@
.state-item
{
margin
:
5px
auto
;
cursor
:
pointer
;
}
.state-item
:hover
{
color
:
#19be6b
;
...
...
drawing-panel/src/drawing/drawing-panel.js
浏览文件 @
288f8303
...
...
@@ -2,27 +2,34 @@
Object
.
defineProperty
(
exports
,
"
__esModule
"
,
{
value
:
true
});
var
logger_1
=
require
(
"
../utils/logger
"
);
var
panel_state_manager_1
=
require
(
"
../panel-state-manager/panel-state-manager
"
);
var
shape_recognition_tool_1
=
require
(
"
../recogonition/shape-recognition-tool
"
);
var
PanelStore
=
/** @class */
(
function
()
{
function
PanelStore
(
states
)
{
this
.
states
=
states
;
}
return
PanelStore
;
}());
exports
.
PanelStore
=
PanelStore
;
var
shape_recognition_util_1
=
require
(
"
../recogonition/shape-recognition-util
"
);
var
message_1
=
require
(
"
../utils/message
"
);
var
DrawingPanel
=
/** @class */
(
function
()
{
function
DrawingPanel
(
containerID
,
options
)
{
var
_this
=
this
;
this
.
onDrawingEnd
=
function
(
shape
)
{
/**
* 画完一次的 回调函数
* @param {Shape} shape
* @param {PanelState} lastState 之前画面状态
*/
this
.
onDrawingEnd
=
function
(
shape
,
lastState
)
{
logger_1
.
default
.
info
(
DrawingPanel
.
TAG
,
'
画完了
'
,
shape
);
var
type
=
shape_recognition_tool_1
.
ShapeRecognitionTool
.
test
(
shape
.
coordinates
);
shape
.
label
=
type
;
var
ctx
=
_this
.
canvas
.
getContext
(
'
2d
'
);
ctx
.
save
();
ctx
.
fillStyle
=
DrawingPanel
.
labelColor
;
ctx
.
font
=
DrawingPanel
.
labelFont
;
ctx
.
fillText
(
shape
.
label
,
shape
.
startPoint
.
x
,
shape
.
startPoint
.
y
);
ctx
.
restore
();
var
recognizedShape
=
shape_recognition_util_1
.
ShapeRecognitionUtil
.
test
(
shape
.
coordinates
);
var
label
;
if
(
!
recognizedShape
)
{
// 没有识别结果
label
=
prompt
(
'
未识别出结果,请手动填写
'
);
}
else
{
if
(
confirm
(
"
\
u7CFB
\
u7EDF
\
u8BC6
\
u522B
\
u7ED3
\
u679C
\
u4E3A
\
uFF1A
"
+
recognizedShape
.
label
+
"
\
uFF0C
\
u662F
\
u5426
\
u81EA
\
u52A8
\
u6821
\
u6B63
\
u56FE
\
u5F62
\
uFF1F
"
))
{
_this
.
restoreCanvas
(
lastState
);
recognizedShape
.
draw
(
_this
.
canvas
.
getContext
(
'
2d
'
));
label
=
recognizedShape
.
label
;
}
}
if
(
label
)
{
_this
.
drawText
(
label
,
shape
.
coordinates
[
0
]);
}
};
this
.
drawing
=
false
;
// 准备options
...
...
@@ -43,22 +50,40 @@ var DrawingPanel = /** @class */ (function () {
this
.
drawingTool
=
tool
;
this
.
drawingTool
.
init
(
this
.
onDrawingEnd
);
};
// 设置管理器
DrawingPanel
.
prototype
.
setStateManager
=
function
(
stateManager
)
{
this
.
stateManager
=
stateManager
;
};
DrawingPanel
.
prototype
.
getCanvas
=
function
()
{
return
this
.
canvas
;
};
/**
* 得到画板状态的 列表
* @return {PanelState[]}
*/
DrawingPanel
.
prototype
.
getPanelStates
=
function
()
{
if
(
!
this
.
stateManager
)
return
[];
var
res
=
[];
this
.
stateManager
.
forEach
(
function
(
item
)
{
res
.
push
(
item
);
});
return
res
;
};
/**
* 保存当前画面
* @return {PanelState[]} 目前状态列表
*/
DrawingPanel
.
prototype
.
saveCanvas
=
function
()
{
var
ctx
=
this
.
canvas
.
getContext
(
'
2d
'
);
var
data
=
this
.
canvas
.
toDataURL
();
var
id
=
new
Date
().
getTime
().
toString
()
+
'
state
'
;
var
id
=
"
state
"
+
new
Date
().
getTime
().
toString
();
var
state
=
new
panel_state_manager_1
.
PanelState
(
id
,
data
);
this
.
stateManager
.
save
(
state
);
if
(
!
this
.
stateManager
)
{
return
[];
}
this
.
stateManager
.
save
(
state
).
then
(
function
(
res
)
{
message_1
.
Message
.
show
(
'
保存成功
'
);
});
var
stateList
=
[];
this
.
stateManager
.
forEach
(
function
(
item
)
{
stateList
.
push
(
item
);
...
...
@@ -71,19 +96,16 @@ var DrawingPanel = /** @class */ (function () {
*/
DrawingPanel
.
prototype
.
restoreCanvas
=
function
(
state
)
{
this
.
resetCanvas
();
if
(
!
state
)
{
return
false
;
}
var
ctx
=
this
.
canvas
.
getContext
(
'
2d
'
);
var
pic
=
new
Image
();
pic
.
src
=
state
.
data
.
toString
();
pic
.
onload
=
function
()
{
ctx
.
drawImage
(
pic
,
0
,
0
);
};
};
DrawingPanel
.
prototype
.
getPanelStates
=
function
()
{
var
res
=
[];
this
.
stateManager
.
forEach
(
function
(
item
)
{
res
.
push
(
item
);
});
return
res
;
return
true
;
};
/**
* 新一个canvas
...
...
@@ -96,6 +118,14 @@ var DrawingPanel = /** @class */ (function () {
var
ctx
=
this
.
canvas
.
getContext
(
'
2d
'
);
ctx
.
clearRect
(
0
,
0
,
this
.
options
.
width
,
this
.
options
.
height
);
};
DrawingPanel
.
prototype
.
drawText
=
function
(
text
,
point
)
{
var
ctx
=
this
.
canvas
.
getContext
(
'
2d
'
);
ctx
.
save
();
ctx
.
fillStyle
=
DrawingPanel
.
labelColor
;
ctx
.
font
=
DrawingPanel
.
labelFont
;
ctx
.
fillText
(
text
,
point
.
x
,
point
.
y
);
ctx
.
restore
();
};
DrawingPanel
.
prototype
.
initCanvas
=
function
(
options
)
{
var
canvas
=
this
.
canvas
;
canvas
.
width
=
options
.
width
;
...
...
drawing-panel/src/drawing/drawing-panel.js.map
浏览文件 @
288f8303
{"version":3,"file":"drawing-panel.js","sourceRoot":"","sources":["drawing-panel.ts"],"names":[],"mappings":";;AAAA,0CAAqC;AAGrC,kFAGoD;AACpD,iFAA8E;AAa9E;IACE,oBACS,MAAoB;QAApB,WAAM,GAAN,MAAM,CAAc;IAC1B,CAAC;IACN,iBAAC;AAAD,CAAC,AAJD,IAIC;AAJY,gCAAU;AAMvB;IAaE,sBACE,WAAmB,EACnB,OAA6B;QAF/B,iBAaC;QAsEO,iBAAY,GAAG,UAAC,KAAY;YAClC,gBAAM,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YAC5C,IAAI,IAAI,GAAG,6CAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACxD,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;YACnB,IAAM,GAAG,GAAG,KAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACzC,GAAG,CAAC,IAAI,EAAE,CAAC;YACX,GAAG,CAAC,SAAS,GAAG,YAAY,CAAC,UAAU,CAAC;YACxC,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC;YAClC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAClE,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,CAAC,CAAC;QA1FA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,YAAY;QACZ,OAAO,GAAG,OAAO,IAAyB,EAAE,CAAC;QAC7C,KAAK,IAAI,GAAG,IAAI,YAAY,CAAC,cAAc,EAAE;YAC3C,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;SACjE;QACD,KAAK,IAAI,GAAG,IAAI,OAAO,CAAC,KAAK,EAAE;YAC7B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SACnF;QACD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC;IAED,SAAS;IACF,qCAAc,GAArB,UAAsB,IAAiB;QACrC,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;SACzB;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3C,CAAC;IAEM,sCAAe,GAAtB,UAAuB,YAAgC;QACrD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAEM,gCAAS,GAAhB;QACE,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;OAGG;IACI,iCAAU,GAAjB;QACE,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACnC,IAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC;QACrD,IAAI,KAAK,GAAG,IAAI,gCAAU,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,SAAS,GAAiB,EAAE,CAAC;QACjC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAC,IAAI;YAC7B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QACH,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;OAGG;IACI,oCAAa,GAApB,UAAqB,KAAiB;QACpC,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACzC,IAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChC,GAAG,CAAC,MAAM,GAAG;YACX,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,CAAC,CAAC;IACJ,CAAC;IAEM,qCAAc,GAArB;QACE,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAA,IAAI;YAC5B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;OAGG;IACI,kCAAW,GAAlB;QACE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;SAC9C;QACD,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACzC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/D,CAAC;IAcO,iCAAU,GAAlB,UAAmB,OAA4B;QAC7C,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC7B,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC/B,KAAK,IAAI,GAAG,IAAI,OAAO,CAAC,KAAK,EAAE;YAC7B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SACxC;QACD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAEO,2BAAI,GAAZ,UAAa,WAAmB,EAAE,OAA4B;QAC5D,IAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACvD,IAAI,CAAC,SAAS,EAAE;YACd,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SACvB;QACD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC/C,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IA7Hc,gBAAG,GAAG,cAAc,CAAC;IACrB,2BAAc,GAAwB,EAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,EAAC,eAAe,EAAE,OAAO,EAAE,MAAM,EAAC,mBAAmB,EAAC,EAAC,CAAC;IAC/H,uBAAU,GAAG,QAAQ,CAAC;IACtB,sBAAS,GAAG,iBAAiB,CAAC;IA6H/C,mBAAC;CAAA,AAjID,IAiIC;AAjIY,oCAAY"}
\ No newline at end of file
{"version":3,"file":"drawing-panel.js","sourceRoot":"","sources":["drawing-panel.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
drawing-panel/src/drawing/drawing-panel.ts
浏览文件 @
288f8303
import
logger
from
'
../utils/logger
'
;
import
{
DrawingTool
}
from
'
./drawing-tool
'
;
import
{
Shape
}
from
'
./shape
'
;
import
{
Point
,
Shape
}
from
'
.
./shape
/shape
'
;
import
{
IPanelStateManager
,
PanelState
}
from
'
../panel-state-manager/panel-state-manager
'
;
import
{
ShapeRecognitionTool
}
from
'
../recogonition/shape-recognition-tool
'
;
import
{
ShapeRecognitionUtil
}
from
'
../recogonition/shape-recognition-util
'
;
import
{
Message
}
from
'
../utils/message
'
;
/**
* 画板构造选项
*/
export
interface
DrawingPanelOptions
{
width
:
number
;
height
:
number
;
...
...
@@ -16,14 +20,6 @@ export interface DrawingPanelOptions {
};
}
export
class
PanelStore
{
constructor
(
public
states
:
PanelState
[]
)
{}
}
export
class
DrawingPanel
{
private
static
TAG
=
'
DrawingPanel
'
;
private
static
defaultOptions
:
DrawingPanelOptions
=
{
width
:
500
,
height
:
500
,
style
:
{
backgroundColor
:
'
white
'
,
border
:
'
1px solid #dcdee2
'
}};
...
...
@@ -33,13 +29,11 @@ export class DrawingPanel {
private
drawingTool
:
DrawingTool
;
private
drawing
:
boolean
;
private
options
:
DrawingPanelOptions
;
stateManager
:
IPanelStateManager
;
private
stateManager
:
IPanelStateManager
;
constructor
(
containerID
:
string
,
options
?:
DrawingPanelOptions
)
{
constructor
(
containerID
:
string
,
options
?:
DrawingPanelOptions
)
{
this
.
drawing
=
false
;
// 准备options
options
=
options
||
<
DrawingPanelOptions
>
{};
...
...
@@ -61,6 +55,7 @@ export class DrawingPanel {
this
.
drawingTool
.
init
(
this
.
onDrawingEnd
);
}
// 设置管理器
public
setStateManager
(
stateManager
:
IPanelStateManager
)
{
this
.
stateManager
=
stateManager
;
}
...
...
@@ -69,16 +64,35 @@ export class DrawingPanel {
return
this
.
canvas
;
}
/**
* 得到画板状态的 列表
* @return {PanelState[]}
*/
public
getPanelStates
():
PanelState
[]
{
if
(
!
this
.
stateManager
)
return
[];
let
res
=
[];
this
.
stateManager
.
forEach
(
item
=>
{
res
.
push
(
item
);
});
return
res
;
}
/**
* 保存当前画面
* @return {PanelState[]} 目前状态列表
*/
public
saveCanvas
():
PanelState
[]
{
const
ctx
=
this
.
canvas
.
getContext
(
'
2d
'
);
let
data
=
this
.
canvas
.
toDataURL
();
const
id
=
new
Date
().
getTime
().
toString
()
+
'
state
'
;
const
id
=
`state
${
new
Date
().
getTime
().
toString
()
}
`
;
let
state
=
new
PanelState
(
id
,
data
);
this
.
stateManager
.
save
(
state
);
if
(
!
this
.
stateManager
)
{
return
[];
}
this
.
stateManager
.
save
(
state
).
then
(
res
=>
{
Message
.
show
(
'
保存成功
'
);
}
);
let
stateList
:
PanelState
[]
=
[];
this
.
stateManager
.
forEach
((
item
)
=>
{
stateList
.
push
(
item
);
...
...
@@ -90,22 +104,18 @@ export class DrawingPanel {
* 恢复某个画面
* @param {PanelState} state
*/
public
restoreCanvas
(
state
:
PanelState
)
{
public
restoreCanvas
(
state
:
PanelState
)
:
boolean
{
this
.
resetCanvas
();
if
(
!
state
)
{
return
false
;
}
const
ctx
=
this
.
canvas
.
getContext
(
'
2d
'
);
const
pic
=
new
Image
();
pic
.
src
=
state
.
data
.
toString
();
pic
.
onload
=
()
=>
{
ctx
.
drawImage
(
pic
,
0
,
0
);
};
}
public
getPanelStates
():
PanelState
[]
{
let
res
=
[];
this
.
stateManager
.
forEach
(
item
=>
{
res
.
push
(
item
);
});
return
res
;
return
true
;
}
/**
...
...
@@ -120,17 +130,38 @@ export class DrawingPanel {
ctx
.
clearRect
(
0
,
0
,
this
.
options
.
width
,
this
.
options
.
height
);
}
private
onDrawingEnd
=
(
shape
:
Shape
)
=>
{
/**
* 画完一次的 回调函数
* @param {Shape} shape
* @param {PanelState} lastState 之前画面状态
*/
private
onDrawingEnd
=
(
shape
:
Shape
,
lastState
:
PanelState
)
=>
{
logger
.
info
(
DrawingPanel
.
TAG
,
'
画完了
'
,
shape
);
let
type
=
ShapeRecognitionTool
.
test
(
shape
.
coordinates
);
shape
.
label
=
type
;
let
recognizedShape
=
ShapeRecognitionUtil
.
test
(
shape
.
coordinates
);
let
label
;
if
(
!
recognizedShape
)
{
// 没有识别结果
label
=
prompt
(
'
未识别出结果,请手动填写
'
);
}
else
{
if
(
confirm
(
`系统识别结果为:
${
recognizedShape
.
label
}
,是否自动校正图形?`
))
{
this
.
restoreCanvas
(
lastState
);
recognizedShape
.
draw
(
this
.
canvas
.
getContext
(
'
2d
'
));
label
=
recognizedShape
.
label
;
}
}
if
(
label
)
{
this
.
drawText
(
label
,
shape
.
coordinates
[
0
]);
}
};
private
drawText
(
text
:
string
,
point
:
Point
)
{
const
ctx
=
this
.
canvas
.
getContext
(
'
2d
'
);
ctx
.
save
();
ctx
.
fillStyle
=
DrawingPanel
.
labelColor
;
ctx
.
font
=
DrawingPanel
.
labelFont
;
ctx
.
fillText
(
shape
.
label
,
shape
.
startPoint
.
x
,
shape
.
startP
oint
.
y
);
ctx
.
fillText
(
text
,
point
.
x
,
p
oint
.
y
);
ctx
.
restore
();
}
;
}
private
initCanvas
(
options
:
DrawingPanelOptions
)
{
const
canvas
=
this
.
canvas
;
...
...
@@ -152,5 +183,4 @@ export class DrawingPanel {
this
.
initCanvas
(
options
);
}
}
\ No newline at end of file
drawing-panel/src/drawing/drawing-tool-custom.js
浏览文件 @
288f8303
"
use strict
"
;
Object
.
defineProperty
(
exports
,
"
__esModule
"
,
{
value
:
true
});
var
logger_1
=
require
(
"
../utils/logger
"
);
var
panel_state_manager_1
=
require
(
"
../panel-state-manager/panel-state-manager
"
);
var
DrawingToolCustom
=
/** @class */
(
function
()
{
function
DrawingToolCustom
(
canvas
)
{
this
.
canvas
=
canvas
;
...
...
@@ -13,6 +14,7 @@ var DrawingToolCustom = /** @class */ (function () {
// 监听事件
canvas
.
onmousedown
=
function
(
e
)
{
logger_1
.
default
.
info
(
DrawingToolCustom
.
tag
,
'
开始画
'
);
var
lastState
=
_this
.
canvas
.
toDataURL
();
if
(
_this
.
drawing
)
{
return
;
}
...
...
@@ -24,7 +26,7 @@ var DrawingToolCustom = /** @class */ (function () {
ctx
.
beginPath
();
ctx
.
moveTo
(
x
,
y
);
// shape保存图形
var
shape
=
{
id
:
''
,
coordinates
:
[],
label
:
'
未识别
'
,
startPoint
:
{
x
:
x
,
y
:
y
}
};
var
shape
=
{
id
:
''
,
coordinates
:
[
{
x
:
x
,
y
:
y
}
],
label
:
'
未识别
'
};
// 鼠标移动,边动边画
canvas
.
onmousemove
=
function
(
e
)
{
var
x
=
e
.
clientX
-
canvas
.
offsetLeft
;
...
...
@@ -40,7 +42,7 @@ var DrawingToolCustom = /** @class */ (function () {
shape
.
id
=
DrawingToolCustom
.
tag
+
DrawingToolCustom
.
counter
;
DrawingToolCustom
.
counter
++
;
_this
.
drawing
=
false
;
onDrawingEnd
(
shape
);
onDrawingEnd
(
shape
,
new
panel_state_manager_1
.
PanelState
(
'
auto
'
,
lastState
)
);
}
};
};
...
...
drawing-panel/src/drawing/drawing-tool-custom.js.map
浏览文件 @
288f8303
{"version":3,"file":"drawing-tool-custom.js","sourceRoot":"","sources":["drawing-tool-custom.ts"],"names":[],"mappings":";;AAEA,0CAAqC;AAErC;IAOE,2BAAY,MAAyB;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,gCAAI,GAAJ,UAAK,YAAqC;QAA1C,iBAqCC;QApCC,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACzC,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,OAAO;QACP,MAAM,CAAC,WAAW,GAAG,UAAC,CAAC;YACrB,gBAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC1C,IAAI,KAAI,CAAC,OAAO,EAAE;gBAChB,OAAO;aACR;YACD,KAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,OAAO;YACP,IAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;YACxC,IAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;YACvC,MAAM;YACN,GAAG,CAAC,SAAS,EAAE,CAAC;YAChB,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACjB,YAAY;YACZ,IAAI,KAAK,GAAU,EAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,EAAC,CAAC,GAAA,EAAE,CAAC,GAAA,EAAC,EAAC,CAAC;YAC/E,YAAY;YACZ,MAAM,CAAC,WAAW,GAAG,UAAA,CAAC;gBACpB,IAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;gBACxC,IAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;gBACvC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjB,GAAG,CAAC,MAAM,EAAE,CAAC;gBACb,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,EAAC,CAAC,GAAA,EAAE,CAAC,GAAA,EAAC,CAAC,CAAC;YACjC,CAAC,CAAC;YACF,MAAM,CAAC,SAAS,GAAG,UAAA,CAAC;gBAClB,OAAO;gBACP,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;gBAC1B,IAAI,YAAY,EAAE;oBAChB,KAAK,CAAC,EAAE,GAAG,iBAAiB,CAAC,GAAG,GAAG,iBAAiB,CAAC,OAAO,CAAC;oBAC7D,iBAAiB,CAAC,OAAO,EAAE,CAAC;oBAC5B,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;oBACrB,YAAY,CAAC,KAAK,CAAC,CAAC;iBACrB;YACH,CAAC,CAAC;QACJ,CAAC,CAAA;IACH,CAAC;IAED,gCAAI,GAAJ;QACE,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;IACjC,CAAC;IAlDM,yBAAO,GAAW,CAAC,CAAC;IACpB,qBAAG,GAAG,QAAQ,CAAC;IAkDxB,wBAAC;CAAA,AAtDD,IAsDC;AAtDY,8CAAiB"}
\ No newline at end of file
{"version":3,"file":"drawing-tool-custom.js","sourceRoot":"","sources":["drawing-tool-custom.ts"],"names":[],"mappings":";;AAEA,0CAAqC;AACrC,kFAAwE;AAExE;IAOE,2BAAY,MAAyB;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,gCAAI,GAAJ,UAAK,YAA4D;QAAjE,iBAuCC;QArCC,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACzC,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,OAAO;QACP,MAAM,CAAC,WAAW,GAAG,UAAC,CAAC;YACrB,gBAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC1C,IAAM,SAAS,GAAG,KAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC1C,IAAI,KAAI,CAAC,OAAO,EAAE;gBAChB,OAAO;aACR;YACD,KAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,OAAO;YACP,IAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;YACxC,IAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;YACvC,MAAM;YACN,GAAG,CAAC,SAAS,EAAE,CAAC;YAChB,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACjB,YAAY;YACZ,IAAI,KAAK,GAAU,EAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,EAAC,CAAC,GAAA,EAAE,CAAC,GAAA,EAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAC,CAAC;YACjE,YAAY;YACZ,MAAM,CAAC,WAAW,GAAG,UAAA,CAAC;gBACpB,IAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;gBACxC,IAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;gBACvC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjB,GAAG,CAAC,MAAM,EAAE,CAAC;gBACb,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,EAAC,CAAC,GAAA,EAAE,CAAC,GAAA,EAAC,CAAC,CAAC;YACjC,CAAC,CAAC;YACF,MAAM,CAAC,SAAS,GAAG,UAAA,CAAC;gBAClB,OAAO;gBACP,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;gBAC1B,IAAI,YAAY,EAAE;oBAChB,KAAK,CAAC,EAAE,GAAG,iBAAiB,CAAC,GAAG,GAAG,iBAAiB,CAAC,OAAO,CAAC;oBAC7D,iBAAiB,CAAC,OAAO,EAAE,CAAC;oBAC5B,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;oBACrB,YAAY,CAAC,KAAK,EAAE,IAAI,gCAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;iBACxD;YACH,CAAC,CAAC;QACJ,CAAC,CAAA;IACH,CAAC;IAED,gCAAI,GAAJ;QACE,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;IACjC,CAAC;IApDM,yBAAO,GAAW,CAAC,CAAC;IACpB,qBAAG,GAAG,QAAQ,CAAC;IAoDxB,wBAAC;CAAA,AAxDD,IAwDC;AAxDY,8CAAiB"}
\ No newline at end of file
drawing-panel/src/drawing/drawing-tool-custom.ts
浏览文件 @
288f8303
import
{
DrawingTool
}
from
'
./drawing-tool
'
;
import
{
Shape
}
from
'
./shape
'
;
import
{
Shape
}
from
'
.
./shape
/shape
'
;
import
logger
from
'
../utils/logger
'
;
import
{
PanelState
}
from
'
../panel-state-manager/panel-state-manager
'
;
export
class
DrawingToolCustom
implements
DrawingTool
{
...
...
@@ -14,12 +15,14 @@ export class DrawingToolCustom implements DrawingTool{
this
.
drawing
=
false
;
}
init
(
onDrawingEnd
?:
(
shape
:
Shape
)
=>
void
):
void
{
init
(
onDrawingEnd
?:
(
shape
:
Shape
,
lastState
:
PanelState
)
=>
void
):
void
{
const
ctx
=
this
.
canvas
.
getContext
(
'
2d
'
);
const
canvas
=
this
.
canvas
;
// 监听事件
canvas
.
onmousedown
=
(
e
)
=>
{
logger
.
info
(
DrawingToolCustom
.
tag
,
'
开始画
'
);
const
lastState
=
this
.
canvas
.
toDataURL
();
if
(
this
.
drawing
)
{
return
;
}
...
...
@@ -31,7 +34,7 @@ export class DrawingToolCustom implements DrawingTool{
ctx
.
beginPath
();
ctx
.
moveTo
(
x
,
y
);
// shape保存图形
let
shape
:
Shape
=
{
id
:
''
,
coordinates
:
[],
label
:
'
未识别
'
,
startPoint
:
{
x
,
y
}
};
let
shape
=
<
Shape
>
{
id
:
''
,
coordinates
:
[
{
x
,
y
}
],
label
:
'
未识别
'
};
// 鼠标移动,边动边画
canvas
.
onmousemove
=
e
=>
{
const
x
=
e
.
clientX
-
canvas
.
offsetLeft
;
...
...
@@ -47,7 +50,7 @@ export class DrawingToolCustom implements DrawingTool{
shape
.
id
=
DrawingToolCustom
.
tag
+
DrawingToolCustom
.
counter
;
DrawingToolCustom
.
counter
++
;
this
.
drawing
=
false
;
onDrawingEnd
(
shape
);
onDrawingEnd
(
shape
,
new
PanelState
(
'
auto
'
,
lastState
)
);
}
};
}
...
...
drawing-panel/src/drawing/drawing-tool.ts
浏览文件 @
288f8303
import
{
Shape
}
from
'
./shape
'
;
import
{
Shape
}
from
'
../shape/shape
'
;
import
{
PanelState
}
from
'
../panel-state-manager/panel-state-manager
'
;
export
interface
DrawingTool
{
canvas
:
HTMLCanvasElement
;
drawing
:
boolean
;
init
(
onDrawingEnd
?:
(
shape
:
Shape
)
=>
void
):
void
;
init
(
onDrawingEnd
?:
(
shape
:
Shape
,
lastState
:
PanelState
)
=>
void
):
void
;
/**
* 停止画图服务,主要是off 事件
*/
stop
();
}
\ No newline at end of file
drawing-panel/src/main.js
浏览文件 @
288f8303
...
...
@@ -5,6 +5,7 @@ var drawing_tool_custom_1 = require("./drawing/drawing-tool-custom");
var
$
=
require
(
"
jquery
"
);
var
logger_1
=
require
(
"
./utils/logger
"
);
var
panel_state_manager_1
=
require
(
"
./panel-state-manager/panel-state-manager
"
);
var
message_1
=
require
(
"
./utils/message
"
);
var
tool
;
var
panel
;
var
states
=
[];
...
...
@@ -21,12 +22,15 @@ window.onload = function (e) {
// 初始列表
states
=
panel
.
getPanelStates
();
refreshList
();
// 绑定按钮事件
var
saveBtn
=
document
.
getElementById
(
SAVE_BTN_ID
);
if
(
saveBtn
)
{
saveBtn
.
onclick
=
handleSave
;
}
var
newBtn
=
document
.
getElementById
(
NEW_BTN_ID
);
newBtn
.
onclick
=
handleNew
;
if
(
newBtn
)
{
newBtn
.
onclick
=
handleNew
;
}
};
var
handleSave
=
function
()
{
states
=
panel
.
saveCanvas
();
...
...
@@ -34,6 +38,7 @@ var handleSave = function () {
};
var
handleNew
=
function
()
{
panel
.
resetCanvas
();
message_1
.
Message
.
show
(
'
新建成功
'
);
};
var
refreshList
=
function
()
{
logger_1
.
default
.
info
(
TAG
,
'
states
'
,
states
);
...
...
drawing-panel/src/main.js.map
浏览文件 @
288f8303
{"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";;AAAA,yDAAuD;AACvD,qEAAkE;AAClE,0BAA4B;AAC5B,yCAAoC;AACpC,iFAAwG;AAExG,IAAI,IAAI,CAAC;AACT,IAAI,KAAmB,CAAC;AACxB,IAAI,MAAM,GAAiB,EAAE,CAAC;AAE9B,IAAM,WAAW,GAAG,UAAU,CAAC;AAC/B,IAAM,UAAU,GAAG,SAAS,CAAC;AAC7B,IAAM,aAAa,GAAG,YAAY,CAAC;AACnC,IAAM,GAAG,GAAG,SAAS,CAAC;AACtB,IAAM,YAAY,GAAG,WAAW,CAAC;AAEjC,MAAM,CAAC,MAAM,GAAG,UAAC,CAAC;IAChB,KAAK,GAAG,IAAI,4BAAY,CAAC,YAAY,EAAE,EAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAC,CAAC,CAAC;IAClE,IAAI,GAAG,IAAI,uCAAiB,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;IAChD,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAC3B,KAAK,CAAC,eAAe,CAAC,IAAI,qDAA+B,EAAE,CAAC,CAAC;IAE7D,OAAO;IACP,MAAM,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;IAChC,WAAW,EAAE,CAAC;IAEd,IAAI,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IACnD,IAAI,OAAO,EAAE;QACX,OAAO,CAAC,OAAO,GAAG,UAAU,CAAC;KAC9B;IAED,IAAI,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IACjD,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC;AAC7B,CAAC,CAAA;AAGD,IAAM,UAAU,GAAG;IACjB,MAAM,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;IAC5B,WAAW,EAAE,CAAC;AAChB,CAAC,CAAC;AACF,IAAM,SAAS,GAAG;IAChB,KAAK,CAAC,WAAW,EAAE,CAAC;AAEtB,CAAC,CAAA;AAGD,IAAM,WAAW,GAAG;IAClB,gBAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACnC,IAAM,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,aAAa,CAAC,CAAC;IACpC,IAAI,CAAC,KAAK,EAAE,CAAC;IACb,gBAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;4BACtB,KAAK;QACZ,IAAI,EAAE,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC;QACxB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,gBAAM,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC9B,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,UAAC,CAAC;YACf,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IATD,KAAkB,UAAM,EAAN,iBAAM,EAAN,oBAAM,EAAN,IAAM;QAAnB,IAAI,KAAK,eAAA;gBAAL,KAAK;KASb;AACH,CAAC,CAAA"}
\ No newline at end of file
{"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";;AAAA,yDAAuD;AACvD,qEAAkE;AAClE,0BAA4B;AAC5B,yCAAoC;AACpC,iFAAwG;AACxG,2CAA0C;AAE1C,IAAI,IAAI,CAAC;AACT,IAAI,KAAmB,CAAC;AACxB,IAAI,MAAM,GAAiB,EAAE,CAAC;AAE9B,IAAM,WAAW,GAAG,UAAU,CAAC;AAC/B,IAAM,UAAU,GAAG,SAAS,CAAC;AAC7B,IAAM,aAAa,GAAG,YAAY,CAAC;AACnC,IAAM,GAAG,GAAG,SAAS,CAAC;AACtB,IAAM,YAAY,GAAG,WAAW,CAAC;AAEjC,MAAM,CAAC,MAAM,GAAG,UAAC,CAAC;IAChB,KAAK,GAAG,IAAI,4BAAY,CAAC,YAAY,EAAE,EAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAC,CAAC,CAAC;IAClE,IAAI,GAAG,IAAI,uCAAiB,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;IAChD,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAC3B,KAAK,CAAC,eAAe,CAAC,IAAI,qDAA+B,EAAE,CAAC,CAAC;IAE7D,OAAO;IACP,MAAM,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;IAChC,WAAW,EAAE,CAAC;IAEd,SAAS;IACT,IAAI,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IACnD,IAAI,OAAO,EAAE;QACX,OAAO,CAAC,OAAO,GAAG,UAAU,CAAC;KAC9B;IACD,IAAI,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IACjD,IAAI,MAAM,EAAE;QACV,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC;KAC5B;AACH,CAAC,CAAA;AAGD,IAAM,UAAU,GAAG;IACjB,MAAM,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;IAC5B,WAAW,EAAE,CAAC;AAChB,CAAC,CAAC;AACF,IAAM,SAAS,GAAG;IAChB,KAAK,CAAC,WAAW,EAAE,CAAC;IACpB,iBAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACvB,CAAC,CAAC;AAEF,IAAM,WAAW,GAAG;IAClB,gBAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACnC,IAAM,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,aAAa,CAAC,CAAC;IACpC,IAAI,CAAC,KAAK,EAAE,CAAC;IACb,gBAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;4BACtB,KAAK;QACZ,IAAI,EAAE,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC;QACxB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,gBAAM,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC9B,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,UAAC,CAAC;YACf,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IATD,KAAkB,UAAM,EAAN,iBAAM,EAAN,oBAAM,EAAN,IAAM;QAAnB,IAAI,KAAK,eAAA;gBAAL,KAAK;KASb;AACH,CAAC,CAAA"}
\ No newline at end of file
drawing-panel/src/main.ts
浏览文件 @
288f8303
...
...
@@ -3,6 +3,7 @@ import { DrawingToolCustom } from './drawing/drawing-tool-custom';
import
*
as
$
from
'
jquery
'
;
import
logger
from
'
./utils/logger
'
;
import
{
PanelState
,
PanelStateManagerByLocalStorage
}
from
'
./panel-state-manager/panel-state-manager
'
;
import
{
Message
}
from
'
./utils/message
'
;
var
tool
;
var
panel
:
DrawingPanel
;
...
...
@@ -24,13 +25,15 @@ window.onload = (e) => {
states
=
panel
.
getPanelStates
();
refreshList
();
// 绑定按钮事件
let
saveBtn
=
document
.
getElementById
(
SAVE_BTN_ID
);
if
(
saveBtn
)
{
saveBtn
.
onclick
=
handleSave
;
}
let
newBtn
=
document
.
getElementById
(
NEW_BTN_ID
);
newBtn
.
onclick
=
handleNew
;
if
(
newBtn
)
{
newBtn
.
onclick
=
handleNew
;
}
}
...
...
@@ -40,9 +43,8 @@ const handleSave = () => {
};
const
handleNew
=
()
=>
{
panel
.
resetCanvas
();
}
Message
.
show
(
'
新建成功
'
);
};
const
refreshList
=
()
=>
{
logger
.
info
(
TAG
,
'
states
'
,
states
);
...
...
drawing-panel/src/panel-state-manager/panel-state-manager.js
浏览文件 @
288f8303
"
use strict
"
;
var
__awaiter
=
(
this
&&
this
.
__awaiter
)
||
function
(
thisArg
,
_arguments
,
P
,
generator
)
{
return
new
(
P
||
(
P
=
Promise
))(
function
(
resolve
,
reject
)
{
function
fulfilled
(
value
)
{
try
{
step
(
generator
.
next
(
value
));
}
catch
(
e
)
{
reject
(
e
);
}
}
function
rejected
(
value
)
{
try
{
step
(
generator
[
"
throw
"
](
value
));
}
catch
(
e
)
{
reject
(
e
);
}
}
function
step
(
result
)
{
result
.
done
?
resolve
(
result
.
value
)
:
new
P
(
function
(
resolve
)
{
resolve
(
result
.
value
);
}).
then
(
fulfilled
,
rejected
);
}
step
((
generator
=
generator
.
apply
(
thisArg
,
_arguments
||
[])).
next
());
});
};
var
__generator
=
(
this
&&
this
.
__generator
)
||
function
(
thisArg
,
body
)
{
var
_
=
{
label
:
0
,
sent
:
function
()
{
if
(
t
[
0
]
&
1
)
throw
t
[
1
];
return
t
[
1
];
},
trys
:
[],
ops
:
[]
},
f
,
y
,
t
,
g
;
return
g
=
{
next
:
verb
(
0
),
"
throw
"
:
verb
(
1
),
"
return
"
:
verb
(
2
)
},
typeof
Symbol
===
"
function
"
&&
(
g
[
Symbol
.
iterator
]
=
function
()
{
return
this
;
}),
g
;
function
verb
(
n
)
{
return
function
(
v
)
{
return
step
([
n
,
v
]);
};
}
function
step
(
op
)
{
if
(
f
)
throw
new
TypeError
(
"
Generator is already executing.
"
);
while
(
_
)
try
{
if
(
f
=
1
,
y
&&
(
t
=
op
[
0
]
&
2
?
y
[
"
return
"
]
:
op
[
0
]
?
y
[
"
throw
"
]
||
((
t
=
y
[
"
return
"
])
&&
t
.
call
(
y
),
0
)
:
y
.
next
)
&&
!
(
t
=
t
.
call
(
y
,
op
[
1
])).
done
)
return
t
;
if
(
y
=
0
,
t
)
op
=
[
op
[
0
]
&
2
,
t
.
value
];
switch
(
op
[
0
])
{
case
0
:
case
1
:
t
=
op
;
break
;
case
4
:
_
.
label
++
;
return
{
value
:
op
[
1
],
done
:
false
};
case
5
:
_
.
label
++
;
y
=
op
[
1
];
op
=
[
0
];
continue
;
case
7
:
op
=
_
.
ops
.
pop
();
_
.
trys
.
pop
();
continue
;
default
:
if
(
!
(
t
=
_
.
trys
,
t
=
t
.
length
>
0
&&
t
[
t
.
length
-
1
])
&&
(
op
[
0
]
===
6
||
op
[
0
]
===
2
))
{
_
=
0
;
continue
;
}
if
(
op
[
0
]
===
3
&&
(
!
t
||
(
op
[
1
]
>
t
[
0
]
&&
op
[
1
]
<
t
[
3
])))
{
_
.
label
=
op
[
1
];
break
;
}
if
(
op
[
0
]
===
6
&&
_
.
label
<
t
[
1
])
{
_
.
label
=
t
[
1
];
t
=
op
;
break
;
}
if
(
t
&&
_
.
label
<
t
[
2
])
{
_
.
label
=
t
[
2
];
_
.
ops
.
push
(
op
);
break
;
}
if
(
t
[
2
])
_
.
ops
.
pop
();
_
.
trys
.
pop
();
continue
;
}
op
=
body
.
call
(
thisArg
,
_
);
}
catch
(
e
)
{
op
=
[
6
,
e
];
y
=
0
;
}
finally
{
f
=
t
=
0
;
}
if
(
op
[
0
]
&
5
)
throw
op
[
1
];
return
{
value
:
op
[
0
]
?
op
[
1
]
:
void
0
,
done
:
true
};
}
};
Object
.
defineProperty
(
exports
,
"
__esModule
"
,
{
value
:
true
});
var
logger_1
=
require
(
"
../utils/logger
"
);
var
PanelState
=
/** @class */
(
function
()
{
...
...
@@ -27,14 +62,27 @@ var PanelStateManagerByLocalStorage = /** @class */ (function () {
this
.
states
.
forEach
(
fn
);
};
PanelStateManagerByLocalStorage
.
prototype
.
save
=
function
(
state
)
{
logger_1
.
default
.
info
(
PanelStateManagerByLocalStorage
.
TAG
,
'
保存
'
,
state
);
this
.
states
.
push
(
state
);
window
.
localStorage
.
setItem
(
PanelStateManagerByLocalStorage
.
KEY
,
JSON
.
stringify
(
this
.
states
));
return
__awaiter
(
this
,
void
0
,
void
0
,
function
()
{
return
__generator
(
this
,
function
(
_a
)
{
logger_1
.
default
.
info
(
PanelStateManagerByLocalStorage
.
TAG
,
'
保存
'
,
state
);
this
.
states
.
push
(
state
);
window
.
localStorage
.
setItem
(
PanelStateManagerByLocalStorage
.
KEY
,
JSON
.
stringify
(
this
.
states
));
return
[
2
/*return*/
];
});
});
};
PanelStateManagerByLocalStorage
.
prototype
.
clearAll
=
function
()
{
logger_1
.
default
.
info
(
PanelStateManagerByLocalStorage
.
TAG
,
'
清除所有
'
);
this
.
states
=
[];
window
.
localStorage
.
removeItem
(
PanelStateManagerByLocalStorage
.
KEY
);
return
__awaiter
(
this
,
void
0
,
void
0
,
function
()
{
return
__generator
(
this
,
function
(
_a
)
{
logger_1
.
default
.
info
(
PanelStateManagerByLocalStorage
.
TAG
,
'
清除所有
'
);
this
.
states
=
[];
window
.
localStorage
.
removeItem
(
PanelStateManagerByLocalStorage
.
KEY
);
return
[
2
/*return*/
];
});
});
};
PanelStateManagerByLocalStorage
.
prototype
.
restore
=
function
()
{
return
this
.
states
.
pop
();
};
PanelStateManagerByLocalStorage
.
TAG
=
'
PanelStateManagerByLocalStorage
'
;
PanelStateManagerByLocalStorage
.
KEY
=
'
panel-states
'
;
...
...
drawing-panel/src/panel-state-manager/panel-state-manager.js.map
浏览文件 @
288f8303
{"version":3,"file":"panel-state-manager.js","sourceRoot":"","sources":["panel-state-manager.ts"],"names":[],"mappings":";;AAAA,0CAAqC;AAErC;IACE,oBACS,EAAU,EACV,IAAY;QADZ,OAAE,GAAF,EAAE,CAAQ;QACV,SAAI,GAAJ,IAAI,CAAQ;IAClB,CAAC;IACN,iBAAC;AAAD,CAAC,AALD,IAKC;AALY,gCAAU;AAgBvB;;GAEG;AACH;IAKE;QACE,IAAI,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,+BAA+B,CAAC,GAAG,CAAC,CAAC;QAC3E,IAAI,GAAG,EAAE;YACP,IAAI,CAAC,MAAM,GAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SAChC;aAAM;YACL,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;SAClB;QACD,gBAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9E,CAAC;IAED,iDAAO,GAAP,UAAQ,EAA+B;QACrC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,8CAAI,GAAJ,UAAK,KAAiB;QACpB,gBAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,+BAA+B,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAChG,CAAC;IAED,kDAAQ,GAAR;QACE,gBAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,+BAA+B,CAAC,GAAG,CAAC,CAAC;IACtE,CAAC;IA5Bc,mCAAG,GAAG,iCAAiC,CAAC;IACxC,mCAAG,GAAG,cAAc,CAAC;IA6BtC,sCAAC;CAAA,AA/BD,IA+BC;AA/BY,0EAA+B"}
\ No newline at end of file