From 6059e2bf30a6688bfa8811037ac1a660b5472410 Mon Sep 17 00:00:00 2001 From: sige Date: Mon, 6 May 2024 21:08:15 +0800 Subject: [PATCH] f --- app.db | Bin 0 -> 114688 bytes src/main/java/com/iflytop/uf/UfActuator.java | 6 ++ src/main/java/com/iflytop/uf/UfActuatorBase.java | 35 ++++++++ .../java/com/iflytop/uf/UfActuatorCmdExecutor.java | 88 ++++++++++++++++++--- .../java/com/iflytop/uf/UfActuatorCommand.java | 10 +++ .../java/com/iflytop/uf/UfActuatorHandler.java | 10 +++ src/main/java/com/iflytop/uf/UfApplication.java | 1 + .../java/com/iflytop/uf/UfApplicationRunner.java | 14 ++++ .../com/iflytop/uf/actuator/UfActStepperMotor.java | 59 ++++++++++++++ .../uf/connection/UfZcancmderWebsocket.java | 64 --------------- .../com/iflytop/uf/controller/UfApiActuator.java | 2 +- .../java/com/iflytop/uf/model/UfMdbActuator.java | 3 + src/main/resources/application.yml | 10 ++- ...V1_1__alter_table_actuators_add_column_type.sql | 17 ++++ src/main/resources/static/uf/css/app.5595db20.css | 3 + src/main/resources/static/uf/css/app.eacba97d.css | 3 - src/main/resources/static/uf/index.html | 2 +- src/main/resources/static/uf/js/app.66d72d84.js | 2 - .../resources/static/uf/js/app.66d72d84.js.map | 1 - src/main/resources/static/uf/js/app.98f78643.js | 2 + .../resources/static/uf/js/app.98f78643.js.map | 1 + 21 files changed, 251 insertions(+), 82 deletions(-) create mode 100644 app.db create mode 100644 src/main/java/com/iflytop/uf/UfActuator.java create mode 100644 src/main/java/com/iflytop/uf/UfActuatorBase.java create mode 100644 src/main/java/com/iflytop/uf/UfActuatorCommand.java create mode 100644 src/main/java/com/iflytop/uf/UfActuatorHandler.java create mode 100644 src/main/java/com/iflytop/uf/UfApplicationRunner.java create mode 100644 src/main/java/com/iflytop/uf/actuator/UfActStepperMotor.java create mode 100644 src/main/resources/db/migration/V1_1__alter_table_actuators_add_column_type.sql create mode 100644 src/main/resources/static/uf/css/app.5595db20.css delete mode 100644 src/main/resources/static/uf/css/app.eacba97d.css delete mode 100644 src/main/resources/static/uf/js/app.66d72d84.js delete mode 100644 src/main/resources/static/uf/js/app.66d72d84.js.map create mode 100644 src/main/resources/static/uf/js/app.98f78643.js create mode 100644 src/main/resources/static/uf/js/app.98f78643.js.map diff --git a/app.db b/app.db new file mode 100644 index 0000000000000000000000000000000000000000..d049cbfec1b962ca995f1ef960a5c64abf47a9ee GIT binary patch literal 114688 zcmeI)e~jB!0SEB-a!u|>@6zk_>UB)2@Ps0+TXB^fB2IjjX!vHY+rJT z)7&;R(tWM^YQOhvzxR31&ra;TC$6sQ7U9Z9qpDb3GIS`!FrhDTTqqP0>HH9#y-A=8 z zfgF{dz$3jpJ!yQWU?`6FrQD)({FYK_x-MQ=-$Jj*YW6{Bs=$5pRefYG!d^W!j4CZ`wXvTQoMz-M z&h-kqF+=P1G#gsjJ`Kl_tX3UK`*iG}A)4-Fv3;6#L}-eoY&ey(XNzV{rxjuc(o?Qg znu)TK#B3WK1tkr|E~`u>-12sY#QGJxGeJk`1G^SlBD+gl3Fvv80uO9DZkuo$jbHA* zjp6)kgnd#P)EJC)dpdJ$shfPWnR>rgT>&$_PF?Z4OuD5_-yj`)~wawEr$ZEPhtw+&UqHr+6Zk`<^(UrwEL|4#kD>dny8rx@mhpM49-5%Cm zobD~V8?#$#TE{^b9=q%CPmO*ZLhv<*ZrZox>8S|2a$-=)-3+$N?5-T#o}P%ZOH0ho zRll^Fu39p^LRXzC-(8#PE%R<n8N^>@74|e=L zcW`a@;^p(x-eQ}HMA>+p*(vxMifT0#%V;ntJg&(&|5iG&C{R6v)0j+}{&^Gvb z!#=Amo$S3W@$YN+7hdE&?!FBvAC0h=eH!u8lig$je{u;gjuKCHo5P zrFH@i1T#AELs5Er4928a=^9b(F2A?o_%QwrA2(2#mcu@f-DCMJ$MfWAWbY9=V=q*c z8-Z2Rk%PL@pyz-^?}>vBRn~72?eTjidrr}<3r6FDUenEIdhbE}(u-a$`?iU~fqQkU zUL`oy*4-|gplEA09A(dEnbuk7roUXd{hV@JHq~cHRgs_3O?ryaRaw_=^^F>LTguAX zqs6B69{UE4bvN3+Y3PyMj~+F8 z?W$CWCO4GYO`cm>+ifWPvl{hAxc7z8H%Ap8mlE0SG_<0uX=z z1Rwwb2tWV=5P(3BKx=Glnwfuc{^t11!_4HEbVgDt^s6q;`O=W{zDY7UMbkLds5GlJ z&i+p0iL0yEBw3PWC$;RP_Pyu_AdPo69gat0SG_<0uX=z z1Rwwb2tXh}pfw+!-rPK%U3hqYZf=5TB~i+djG*PSWg(SUh>%xRNyw+AQZ^};b2*|) z8L^y7WHUlGkrRbfDJ2Rel9B{b&1TC|Hk-_+GS90@jgCS=8t;AQjdy?W=6gT;&EH>n z?ftL+@*m&-)qC5&786pcYS5t;WTKe2<*KnoWXq7BCk-Q=P79JCwGNNDxtgQ7%BV^{ zQ%)xYC0EV}DUIZWd@iR5nN&KjB@>#G$fUJIDxs+vA|%S$63vyG5tMQ|MRT4mm6MrV znxxAgBUetQ4l!P)VzG%dJ!&RbP6?TO(q>RHLP<;}gxB&10; zC8QFfDwL=Y&6JW!*7UbhYls@4j$_N ztV}N5l^K00Izz00bZa0SG_<0uX=z1R(IK34Dc#Y;GPq zHaE;q0YswZ%cXpd{;(mJpg$MLz|jBhR+ z8|F6v7BQ`N-}uJ+uYVWs|9|G24FDhj0SG_<0uX=z1Rwwb2tZ(j1?>0#hxsM|@Bfc* zB_rz)fB*y_009U<00Izz00bZafguI#=l}Tq|BzTn1_1~_00Izz00bZa0SG_<0uUHc z0X+X7(TYR1ApijgKmY;|fB*y_009U<00R3E!1MooU?C|4AOHafKmY;|fB*y_009U< zU_=G*{C`9%4%vnP1Rwwb2tWV=5P$##AOHaf>_Y&b|M!7~q!54r1Rwwb2tWV=5P$## zAOL|86~O!dBU*9DHUuC50SG_<0uX=z1Rwwb2tZ&T0(kzv4=f~w00bZa0SG_<0uX=z z1Rwwb2#lxzp8t<%#Ua}efB*y_009U<00Izz00bZafqe+z`Tst!kQ4$CfB*y_009U< z00Izz00bZ~q5^pSKcW?fY(oG75P$##AOHafKmY;|fB*#cA%N%q`@lj{2tWV=5P$## zAOHafKmY;|fWU|f;Q9ZERvfYo0SG_<0uX=z1Rwwb2tWV=5ZH&n%*6LXv(d|;*l%a= z&VGC5=Ldgu@T=25oxVQx($wn2pC^7Cy*%+W-Q7H$57T*$&WAc?FYE{nv(p@<^8%e8 zpfgM7aXN?TJVs|s5P$##AOL~;Q($}MfhZe~GdtHUrBoqGy)G-N)l@8_VRo&2?)-YO zuuYl z+nYO!$F{eQM%m-XnU@~+Yr%=I58y03(527&;k;`ftWRSURW+J5YmZ19fkxLA(|pco z(CX<^3pCzTD&DppVm$6|tu}~a5v@Rz=rxPnAPt{d+?(het!bx$c>CE+LGwsVbHlhv zYVCaZ+jhhhZ`Jii*RlLmx>?YwI^8xf6Md^YyAWY7Ee@(Hv!>VU#B!_4TVq>Sk3`wU zMP{4$HRi?HmE$cR?X5R2%CEYh^M>PlPYvJJuK_;rG~sx)s_i`wT(G_vEAtWd>Fgkk z25m-qmB?F4L$|vNSEVO-p_M-zWwTjkd(P+SNn|_q1Rm)H>q+Cw1$H^K)%tdR6WLNK zO}E?d!um2iG8bX5o*IUsV%%t-#a~2A6 zfdYD0+VOIHyF={L_d2nvK~GHk{0~ZC*QseK)%xz~)7=-h4?8ukLBn9d@Wynu)TK#B3WKTAf?jZKr#i zSUI#~* z-~VS~l@R@h2?7v+00bZa0SG_<0uX=z1Rwx`k1NnR!nEd?=;r3aLi~o55zDDWHX~#c zIZ;TJQld~IDM=93Y_=?Av&noaBN8oNF6DDVCY4JFsYE6(l#(e`P!npB5HVd&Dd`NI z(sVK{LcdpS2vvhVYIuRK(yzCcc^b~2=1EO8G}0(+DSE~JmXTkUPV+{&Y!ZuKPQ7Tq q|IftkhUh;`5P$##AOHafKmY;|fB*y_009V$m_R(dIXTR?4F3gl+~#5c literal 0 HcmV?d00001 diff --git a/src/main/java/com/iflytop/uf/UfActuator.java b/src/main/java/com/iflytop/uf/UfActuator.java new file mode 100644 index 0000000..01b2b57 --- /dev/null +++ b/src/main/java/com/iflytop/uf/UfActuator.java @@ -0,0 +1,6 @@ +package com.iflytop.uf; +import com.iflytop.uf.model.UfMdbActuatorCmd; +public interface UfActuator { + // execute + String execute( UfMdbActuatorCmd command ); +} diff --git a/src/main/java/com/iflytop/uf/UfActuatorBase.java b/src/main/java/com/iflytop/uf/UfActuatorBase.java new file mode 100644 index 0000000..3052107 --- /dev/null +++ b/src/main/java/com/iflytop/uf/UfActuatorBase.java @@ -0,0 +1,35 @@ +package com.iflytop.uf; +import com.iflytop.uf.model.UfMdbActuatorCmd; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.HashMap; +import java.util.Map; +abstract public class UfActuatorBase implements UfActuator { + // method map + private final Map methodMap; + + // constructor + public UfActuatorBase() { + this.methodMap = new HashMap<>(); + for ( var method : this.getClass().getMethods() ) { + var annotation = method.getAnnotation(UfActuatorCommand.class); + if ( annotation != null ) { + methodMap.put(annotation.name(), method); + } + } + } + + @Override + public String execute(UfMdbActuatorCmd command) { + if ( !methodMap.containsKey(command.cmdKey) ) { + return UfActuatorCmdExecutor.getExecutor().sendCommandToConnection(command); + } + + var method = methodMap.get(command.cmdKey); + try { + return (String)method.invoke(this, command); + } catch (IllegalAccessException | InvocationTargetException e) { + throw new RuntimeException(e); + } + } +} diff --git a/src/main/java/com/iflytop/uf/UfActuatorCmdExecutor.java b/src/main/java/com/iflytop/uf/UfActuatorCmdExecutor.java index 0f009b3..1032757 100644 --- a/src/main/java/com/iflytop/uf/UfActuatorCmdExecutor.java +++ b/src/main/java/com/iflytop/uf/UfActuatorCmdExecutor.java @@ -2,6 +2,7 @@ package com.iflytop.uf; import com.iflytop.uf.model.UfMdbActuator; import com.iflytop.uf.model.UfMdbActuatorCmd; import com.iflytop.uf.model.UfMdbNotification; +import com.iflytop.uf.util.UfClassHelper; import com.iflytop.uf.util.UfCommon; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -10,29 +11,98 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.HashMap; import java.util.Map; - public class UfActuatorCmdExecutor { // logger public static final Logger LOG = LoggerFactory.getLogger(UfActuatorCmdExecutor.class); + // executor instance + private static UfActuatorCmdExecutor executor = null; + // actuator classes + private final Map> actuatorClasses; + // actuators + private final Map actuators; - // emergency stop restore lock - private static final Object emergencyStopRestoreLock = new Object(); + // setup + public static void setup() { + UfActuatorCmdExecutor.executor = new UfActuatorCmdExecutor(); + UfActuatorCmdExecutor.executor.loadActuatorHandlers(); + } - // execute command - public static String emergencyExecute(UfMdbActuatorCmd cmd) { - var con = UfApplication.getApp().connections.get(cmd.connectionKey); - return con.execute(cmd); + // get executor instance + public static UfActuatorCmdExecutor getExecutor() { + return UfActuatorCmdExecutor.executor; } // execute cmd public static String execute(UfMdbActuatorCmd cmd) { - if ( UfActuatorCmdExecutor.hasEmergencyStopTriggered() ) { - throw new RuntimeException("触发紧急停止"); + return UfActuatorCmdExecutor.executor.executeCommand(cmd); + } + + // constructor + public UfActuatorCmdExecutor() { + this.actuators = new HashMap<>(); + this.actuatorClasses = new HashMap<>(); + } + + // load actuator handlers + private void loadActuatorHandlers() { + // scan actuator handlers + var actuatorClassList = UfClassHelper.getAllClassesInPackage("com.iflytop.uf.actuator"); + for ( var actuatorClass : actuatorClassList ) { + var annotation = actuatorClass.getAnnotation(UfActuatorHandler.class); + var name = annotation.name(); + LOG.info("[Actuator Handler] handler : {}", name); + this.actuatorClasses.put(name, actuatorClass); + } + } + + // execute command + public String executeCommand( UfMdbActuatorCmd cmd ) { + if ( this.actuators.containsKey(cmd.actuatorId) ) { + return this.actuators.get(cmd.actuatorId).execute(cmd); } + + var actuator = UfActiveRecord.findOne(UfMdbActuator.class, Map.of("id", cmd.actuatorId)); + if ( null == actuator ) { + throw new RuntimeException("无效的设备ID :" + cmd.actuatorId); + } + + var handlerClass = this.actuatorClasses.get(actuator.type); + if ( null == handlerClass ) { + // 如果没有找到对应的处理器,则直接发送命令到连接 + return this.sendCommandToConnection(cmd); + } + + var handler = (UfActuator) UfClassHelper.newInstance(handlerClass); + this.actuators.put(cmd.actuatorId, handler); + return this.executeCommand(cmd); + } + + // send command to connection to execute + public String sendCommandToConnection( UfMdbActuatorCmd cmd ) { + var con = UfApplication.getApp().connections.get(cmd.connectionKey); + return con.execute(cmd); + } + + + + + + + + + + + // emergency stop restore lock + private static final Object emergencyStopRestoreLock = new Object(); + + // execute command + public static String emergencyExecute(UfMdbActuatorCmd cmd) { var con = UfApplication.getApp().connections.get(cmd.connectionKey); return con.execute(cmd); } + + // execute cmd public static String execute(String actuatorKey, String cmdKey, String cmdParams ) { var actuator = UfActiveRecord.findOne(UfMdbActuator.class, Map.of("key", actuatorKey)); diff --git a/src/main/java/com/iflytop/uf/UfActuatorCommand.java b/src/main/java/com/iflytop/uf/UfActuatorCommand.java new file mode 100644 index 0000000..2bb1d92 --- /dev/null +++ b/src/main/java/com/iflytop/uf/UfActuatorCommand.java @@ -0,0 +1,10 @@ +package com.iflytop.uf; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.METHOD}) +public @interface UfActuatorCommand { + String name(); +} diff --git a/src/main/java/com/iflytop/uf/UfActuatorHandler.java b/src/main/java/com/iflytop/uf/UfActuatorHandler.java new file mode 100644 index 0000000..a86bd2c --- /dev/null +++ b/src/main/java/com/iflytop/uf/UfActuatorHandler.java @@ -0,0 +1,10 @@ +package com.iflytop.uf; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.TYPE}) +public @interface UfActuatorHandler { + String name(); +} diff --git a/src/main/java/com/iflytop/uf/UfApplication.java b/src/main/java/com/iflytop/uf/UfApplication.java index 9df4809..ff409f5 100644 --- a/src/main/java/com/iflytop/uf/UfApplication.java +++ b/src/main/java/com/iflytop/uf/UfApplication.java @@ -4,6 +4,7 @@ import jakarta.annotation.Nonnull; import jakarta.annotation.PostConstruct; import jakarta.annotation.Resource; import org.springframework.beans.BeansException; +import org.springframework.boot.ApplicationRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ApplicationContext; diff --git a/src/main/java/com/iflytop/uf/UfApplicationRunner.java b/src/main/java/com/iflytop/uf/UfApplicationRunner.java new file mode 100644 index 0000000..4fd1753 --- /dev/null +++ b/src/main/java/com/iflytop/uf/UfApplicationRunner.java @@ -0,0 +1,14 @@ +package com.iflytop.uf; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; +@Order(1) +@Component +public class UfApplicationRunner implements ApplicationRunner { + @Override + public void run(ApplicationArguments args) throws Exception { + UfApplication.getApp().connections.setup(); + UfActuatorCmdExecutor.setup(); + } +} diff --git a/src/main/java/com/iflytop/uf/actuator/UfActStepperMotor.java b/src/main/java/com/iflytop/uf/actuator/UfActStepperMotor.java new file mode 100644 index 0000000..9648142 --- /dev/null +++ b/src/main/java/com/iflytop/uf/actuator/UfActStepperMotor.java @@ -0,0 +1,59 @@ +package com.iflytop.uf.actuator; +import com.iflytop.uf.*; +import com.iflytop.uf.model.UfMdbActuator; +import com.iflytop.uf.model.UfMdbActuatorCmd; +@UfActuatorHandler(name = "stepper-motor") +public class UfActStepperMotor extends UfActuatorBase { + @UfActuatorCommand(name = "motor_easy_move_to_zero") + public String easyMoveToZero(UfMdbActuatorCmd cmd) { + var executor = UfActuatorCmdExecutor.getExecutor(); + + var result = executor.sendCommandToConnection(cmd); + + // wait for finish + var waitCmd = new UfMdbActuatorCmd(); + waitCmd.actuatorId = cmd.actuatorId; + waitCmd.cmdId = "0104"; + waitCmd.cmdKey = "module_get_status"; + waitCmd.cmdFlags = cmd.cmdFlags; + waitCmd.parameters = ""; + waitCmd.connectionKey = cmd.connectionKey; + do { + String statusText = executor.sendCommandToConnection(waitCmd); + int status = Integer.parseInt(statusText); + if ( 0 == status ) { + break; + } + } while ( true ); + return result; + } +// +// // cmd motor easy move to +// public void cmdMotorEasyMoveTo(UfMdbActuatorCmd command) { +// this.executeDeviceCommand(command); +// this.waitForActuatorFinish(command); +// +// var actuator = UfActiveRecord.findOne(UfMdbActuator.class, command.actuatorId); +// var encoderAvailable = actuator.getProperty("encoderAvailable"); +// if ( null == encoderAvailable || !encoderAvailable.asBoolean() ) { +// return ; +// } +// +// var destValue = Integer.parseInt(command.parameters); +// var encoderValue = this.getActuatorEncoderValue(command); +// if ( Math.abs(encoderValue - destValue) > 10 ) { +// throw new RuntimeException(String.format("电机 [%s] 移动失败,目标位置:%d,当前位置:%d", actuator.name, destValue, encoderValue)); +// } +// } +// +// // cmd motor read enc val +// private Integer getActuatorEncoderValue(UfMdbActuatorCmd srcCmd) { +// var command = new UfMdbActuatorCmd(); +// command.actuatorId = srcCmd.actuatorId; +// command.cmdId = "0219"; +// command.cmdKey = "motor_read_enc_val"; +// command.cmdFlags = srcCmd.cmdFlags; +// String value = this.executeDeviceCommand(command); +// return Integer.parseInt(value); +// } +} diff --git a/src/main/java/com/iflytop/uf/connection/UfZcancmderWebsocket.java b/src/main/java/com/iflytop/uf/connection/UfZcancmderWebsocket.java index 8f34eb0..d54fb70 100644 --- a/src/main/java/com/iflytop/uf/connection/UfZcancmderWebsocket.java +++ b/src/main/java/com/iflytop/uf/connection/UfZcancmderWebsocket.java @@ -93,10 +93,6 @@ public class UfZcancmderWebsocket extends UfConnectionBase { } catch (Exception e) { throw new RuntimeException(e); } - - if ( 1 == command.waitForFinish ) { - this.waitForActuatorFinish(command); - } return returnValue; } @@ -307,64 +303,4 @@ public class UfZcancmderWebsocket extends UfConnectionBase { this.callLock.notifyAll(); } } - - // wait for actuator finish - private void waitForActuatorFinish(UfMdbActuatorCmd actuatorCmd) { - do { - String filePath = UfApplication.getApp().getEnv().getProperty("app.emergency-stop-file-path"); - if ( null != filePath ) { - try { // read all content from file as string - String state = Files.readString(Path.of(filePath)); - if ( "0".equals(state.trim()) ) { - return ; // emergency stop triggered - } - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - var waitCmd = new UfMdbActuatorCmd(); - waitCmd.actuatorId = actuatorCmd.actuatorId; - waitCmd.cmdId = "0104"; - waitCmd.cmdKey = "module_get_status"; - waitCmd.cmdFlags = actuatorCmd.cmdFlags; - waitCmd.parameters = ""; - String statusText = this.executeDeviceCommand(waitCmd); - int status = Integer.parseInt(statusText); - if ( 0 == status ) { - break; - } - - UfCommon.delay(100); - } while ( true ); - } - - // cmd motor easy move to - public void cmdMotorEasyMoveTo(UfMdbActuatorCmd command) { - this.executeDeviceCommand(command); - this.waitForActuatorFinish(command); - - var actuator = UfActiveRecord.findOne(UfMdbActuator.class, command.actuatorId); - var encoderAvailable = actuator.getProperty("encoderAvailable"); - if ( null == encoderAvailable || !encoderAvailable.asBoolean() ) { - return ; - } - - var destValue = Integer.parseInt(command.parameters); - var encoderValue = this.getActuatorEncoderValue(command); - if ( Math.abs(encoderValue - destValue) > 10 ) { - throw new RuntimeException(String.format("电机 [%s] 移动失败,目标位置:%d,当前位置:%d", actuator.name, destValue, encoderValue)); - } - } - - // cmd motor read enc val - private Integer getActuatorEncoderValue(UfMdbActuatorCmd srcCmd) { - var command = new UfMdbActuatorCmd(); - command.actuatorId = srcCmd.actuatorId; - command.cmdId = "0219"; - command.cmdKey = "motor_read_enc_val"; - command.cmdFlags = srcCmd.cmdFlags; - String value = this.executeDeviceCommand(command); - return Integer.parseInt(value); - } } diff --git a/src/main/java/com/iflytop/uf/controller/UfApiActuator.java b/src/main/java/com/iflytop/uf/controller/UfApiActuator.java index fb8dd39..86abcc0 100644 --- a/src/main/java/com/iflytop/uf/controller/UfApiActuator.java +++ b/src/main/java/com/iflytop/uf/controller/UfApiActuator.java @@ -27,7 +27,7 @@ public class UfApiActuator extends UfApiControllerBase { actuator.isNewRecord = false; } actuator.save(); - return success(); + return success(actuator); } @PostMapping("/api/actuator/delete") diff --git a/src/main/java/com/iflytop/uf/model/UfMdbActuator.java b/src/main/java/com/iflytop/uf/model/UfMdbActuator.java index 61c1aba..8b656cd 100644 --- a/src/main/java/com/iflytop/uf/model/UfMdbActuator.java +++ b/src/main/java/com/iflytop/uf/model/UfMdbActuator.java @@ -18,6 +18,9 @@ public class UfMdbActuator extends UfActiveRecord { public String name; @UfActiveRecordField + public String type; + + @UfActiveRecordField public String properties = "{}"; // get table name diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index ae53c6b..8c632a1 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -13,4 +13,12 @@ flyway: encoding: UTF-8 locations: classpath:db/migration validate-on-migrate: true - validateMigrationNaming: true \ No newline at end of file + validateMigrationNaming: true + +device : + connections: + - name : zcancmder + key : zcancmder + enable : true + type : ZcancmderWebsocket + uri: ws://127.0.0.1:19005 \ No newline at end of file diff --git a/src/main/resources/db/migration/V1_1__alter_table_actuators_add_column_type.sql b/src/main/resources/db/migration/V1_1__alter_table_actuators_add_column_type.sql new file mode 100644 index 0000000..170dadf --- /dev/null +++ b/src/main/resources/db/migration/V1_1__alter_table_actuators_add_column_type.sql @@ -0,0 +1,17 @@ +-- rename table to backup +ALTER TABLE app_actuators RENAME TO app_actuators_bk_202405061735; + +-- create new table with new columns +CREATE TABLE app_actuators ( + "id" text NOT NULL, + "moduleId" text NOT NULL, + "key" TEXT NOT NULL, + "name" TEXT NOT NULL, + "type" TEXT NOT NULL, + "properties" TEXT NOT NULL DEFAULT "{}", + PRIMARY KEY ("id") +); + +-- copy data from backup table to new table +INSERT INTO app_actuators (id, moduleId, key, name, type, properties) +SELECT id, moduleId, key, name, '', properties FROM app_actuators_bk_202405061735; \ No newline at end of file diff --git a/src/main/resources/static/uf/css/app.5595db20.css b/src/main/resources/static/uf/css/app.5595db20.css new file mode 100644 index 0000000..b4576e6 --- /dev/null +++ b/src/main/resources/static/uf/css/app.5595db20.css @@ -0,0 +1,3 @@ +/* +! tailwindcss v3.4.3 | MIT License | https://tailwindcss.com +*/*,:after,:before{border-width:0;border-style:solid;border-color:#e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{line-height:inherit}hr{color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal}table{text-indent:0;border-color:inherit}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;letter-spacing:inherit;padding:0}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.static{position:static}.fixed{position:fixed}.mb-1{margin-bottom:.25rem}.ml-1{margin-left:.25rem}.ml-12{margin-left:3rem}.ml-5{margin-left:1.25rem}.mr-1{margin-right:.25rem}.mt-1{margin-top:.25rem}.mt-3{margin-top:.75rem}.block{display:block}.\!inline-block{display:inline-block!important}.flex{display:flex}.h-0{height:0}.h-full{height:100%}.\!w-full{width:100%!important}.w-full{width:100%}.grow{flex-grow:1}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.overflow-y-auto{overflow-y:auto}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-5{padding:1.25rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.text-right{text-align:right}.\!text-2xl{font-size:1.5rem!important;line-height:2rem!important}.\!text-xl{font-size:1.25rem!important;line-height:1.75rem!important}.\!text-gray-600{--tw-text-opacity:1!important;color:rgb(75 85 99/var(--tw-text-opacity))!important}.\!text-white{--tw-text-opacity:1!important;color:rgb(255 255 255/var(--tw-text-opacity))!important}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}body,html{width:100%;height:100%}input::-ms-clear,input::-ms-reveal{display:none}*,:after,:before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{margin:0}[tabindex="-1"]:focus{outline:none}hr{box-sizing:initial;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5em;font-weight:500}p{margin-top:0;margin-bottom:1em}abbr[data-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline;text-decoration:underline dotted;border-bottom:0;cursor:help}address{margin-bottom:1em;font-style:normal;line-height:inherit}input[type=number],input[type=password],input[type=text],textarea{-webkit-appearance:none}dl,ol,ul{margin-top:0;margin-bottom:1em}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:500}dd{margin-bottom:.5em;margin-left:0}blockquote{margin:0 0 1em}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}code,kbd,pre,samp{font-size:1em;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace}pre{margin-top:0;margin-bottom:1em;overflow:auto}figure{margin:0 0 1em}img{vertical-align:middle;border-style:none}[role=button],a,area,button,input:not([type=range]),label,select,summary,textarea{touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75em;padding-bottom:.3em;text-align:left;caption-side:bottom}button,input,optgroup,select,textarea{margin:0;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;margin:0;padding:0;border:0}legend{display:block;width:100%;max-width:100%;margin-bottom:.5em;padding:0;color:inherit;font-size:1.5em;line-height:inherit;white-space:normal}progress{vertical-align:initial}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}mark{padding:.2em;background-color:#feffe6}#app,body,html{height:100%}.app-bg-default,body{background-color:#d2dfef}.snippet-command-list-table .ant-spin-container,.snippet-command-list-table .ant-spin-nested-loading,.snippet-command-list-table .ant-table{height:100%}.snippet-command-list-table .ant-table-container{height:100%;display:flex;flex-direction:column}.snippet-command-list-table .ant-table-container .ant-table-body{overflow-y:scroll;height:0;flex-grow:1} \ No newline at end of file diff --git a/src/main/resources/static/uf/css/app.eacba97d.css b/src/main/resources/static/uf/css/app.eacba97d.css deleted file mode 100644 index 9ef4b9d..0000000 --- a/src/main/resources/static/uf/css/app.eacba97d.css +++ /dev/null @@ -1,3 +0,0 @@ -/* -! tailwindcss v3.4.3 | MIT License | https://tailwindcss.com -*/*,:after,:before{border-width:0;border-style:solid;border-color:#e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{line-height:inherit}hr{color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal}table{text-indent:0;border-color:inherit}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;letter-spacing:inherit;padding:0}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.static{position:static}.fixed{position:fixed}.mb-1{margin-bottom:.25rem}.ml-1{margin-left:.25rem}.ml-12{margin-left:3rem}.ml-5{margin-left:1.25rem}.mr-1{margin-right:.25rem}.mt-1{margin-top:.25rem}.mt-3{margin-top:.75rem}.block{display:block}.\!inline-block{display:inline-block!important}.flex{display:flex}.h-0{height:0}.h-full{height:100%}.w-full{width:100%}.grow{flex-grow:1}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.overflow-y-auto{overflow-y:auto}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-5{padding:1.25rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.text-right{text-align:right}.\!text-2xl{font-size:1.5rem!important;line-height:2rem!important}.\!text-xl{font-size:1.25rem!important;line-height:1.75rem!important}.\!text-gray-600{--tw-text-opacity:1!important;color:rgb(75 85 99/var(--tw-text-opacity))!important}.\!text-white{--tw-text-opacity:1!important;color:rgb(255 255 255/var(--tw-text-opacity))!important}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}body,html{width:100%;height:100%}input::-ms-clear,input::-ms-reveal{display:none}*,:after,:before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{margin:0}[tabindex="-1"]:focus{outline:none}hr{box-sizing:initial;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5em;font-weight:500}p{margin-top:0;margin-bottom:1em}abbr[data-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline;text-decoration:underline dotted;border-bottom:0;cursor:help}address{margin-bottom:1em;font-style:normal;line-height:inherit}input[type=number],input[type=password],input[type=text],textarea{-webkit-appearance:none}dl,ol,ul{margin-top:0;margin-bottom:1em}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:500}dd{margin-bottom:.5em;margin-left:0}blockquote{margin:0 0 1em}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}code,kbd,pre,samp{font-size:1em;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace}pre{margin-top:0;margin-bottom:1em;overflow:auto}figure{margin:0 0 1em}img{vertical-align:middle;border-style:none}[role=button],a,area,button,input:not([type=range]),label,select,summary,textarea{touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75em;padding-bottom:.3em;text-align:left;caption-side:bottom}button,input,optgroup,select,textarea{margin:0;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;margin:0;padding:0;border:0}legend{display:block;width:100%;max-width:100%;margin-bottom:.5em;padding:0;color:inherit;font-size:1.5em;line-height:inherit;white-space:normal}progress{vertical-align:initial}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}mark{padding:.2em;background-color:#feffe6}#app,body,html{height:100%}.app-bg-default,body{background-color:#d2dfef}.snippet-command-list-table .ant-spin-container,.snippet-command-list-table .ant-spin-nested-loading,.snippet-command-list-table .ant-table{height:100%}.snippet-command-list-table .ant-table-container{height:100%;display:flex;flex-direction:column}.snippet-command-list-table .ant-table-container .ant-table-body{overflow-y:scroll;height:0;flex-grow:1} \ No newline at end of file diff --git a/src/main/resources/static/uf/index.html b/src/main/resources/static/uf/index.html index c2cb2bc..7468ef4 100644 --- a/src/main/resources/static/uf/index.html +++ b/src/main/resources/static/uf/index.html @@ -1 +1 @@ -web
\ No newline at end of file +web
\ No newline at end of file diff --git a/src/main/resources/static/uf/js/app.66d72d84.js b/src/main/resources/static/uf/js/app.66d72d84.js deleted file mode 100644 index 5b6d93d..0000000 --- a/src/main/resources/static/uf/js/app.66d72d84.js +++ /dev/null @@ -1,2 +0,0 @@ -(()=>{"use strict";var e={7481:(e,l,a)=>{var t=a(5130),n=a(3367),u=a(1387),o=a(6653),i=a(7900),c=a(6768);const s={__name:"App",setup(e){function l(){document.title="UF-Man"}return(0,c.sV)(l),(e,l)=>{const a=(0,c.g2)("router-view");return(0,c.uX)(),(0,c.Wv)(a)}}},d=s,r=d;a(4529);var m=a(144),v=(a(4979),a(1678),a(4232)),p=a(1114),k=a(8355),f=a(9804);class b{static getClient(){return null===b.client&&(b.client=new b),b.client}constructor(){}async call(e,l={},a=null){let t={},n=`http://${window.location.hostname}/api`;const u=await k.A.post(`${n}/${e}`,l,{headers:t});if(!u.data.success){if(null!==a)return f.A.error({title:"系统错误",content:u.data.message});throw new Error(u.data.message)}return null!==a&&a(u.data.data),u.data.data}async snippetExecute(e,l){return this.call("snippet/execute-by-key",{key:e,params:l})}}(0,p.A)(b,"client",null);const y={class:"h-full bg-gray-500 p-1 flex flex-col"},g={class:"h-0 grow"},C=["onClick"],h={class:"text-gray-400"},F={class:"mt-1"},_={__name:"ModuleManagement",emits:["active"],setup(e,{emit:l}){const a=l,n=(0,m.KR)(!1),u=(0,m.KR)(null),o=(0,m.KR)([]),i=(0,m.KR)(null);function s(){d()}async function d(){let e=b.getClient();o.value=[],o.value=await e.call("module/list")}function r(){n.value=!0,u.value={key:"",name:""}}async function p(){let e=b.getClient();await e.call("module/save",u.value),n.value=!1,u.value=null,d()}async function k(e){let l=b.getClient();await l.call("module/delete",{id:e.id}),d(),e.id===i.value&&(i.value=null,a("active",null))}function f(e){n.value=!0,u.value=structuredClone(e)}function _(e){i.value=e.id,a("active",e)}return(0,c.sV)(s),(e,l)=>{const a=(0,c.g2)("a-button"),s=(0,c.g2)("a-popconfirm"),d=(0,c.g2)("a-input"),m=(0,c.g2)("a-form-item"),b=(0,c.g2)("a-form"),w=(0,c.g2)("a-modal");return(0,c.uX)(),(0,c.CE)(c.FK,null,[(0,c.Lk)("div",y,[(0,c.Lk)("div",g,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(o.value,(e=>((0,c.uX)(),(0,c.CE)("div",{key:e.id,class:(0,v.C4)(["border bg-white p-2 mb-1 hover:bg-gray-200",{"border-blue-500":e.id===i.value}]),onClick:l=>_(e)},[(0,c.Lk)("div",null,[(0,c.eW)((0,v.v_)(e.name)+" ",1),(0,c.Lk)("small",h,"["+(0,v.v_)(e.key)+"]",1)]),(0,c.Lk)("div",F,[(0,c.bF)(s,{title:"是否删除该模组?",placement:"bottom",onConfirm:l=>k(e)},{default:(0,c.k6)((()=>[(0,c.bF)(a,{size:"small",onClick:l[0]||(l[0]=(0,t.D$)((()=>{}),["stop","prevent"]))},{default:(0,c.k6)((()=>[(0,c.eW)("删除")])),_:1})])),_:2},1032,["onConfirm"]),(0,c.bF)(a,{size:"small",class:"ml-1",onClick:(0,t.D$)((l=>f(e)),["stop","prevent"])},{default:(0,c.k6)((()=>[(0,c.eW)("编辑")])),_:2},1032,["onClick"])])],10,C)))),128)),(0,c.bF)(a,{class:"mt-3",type:"primary",block:"",onClick:r},{default:(0,c.k6)((()=>[(0,c.eW)("添加模组")])),_:1})])]),null!==u.value?((0,c.uX)(),(0,c.Wv)(w,{key:0,open:n.value,"onUpdate:open":l[3]||(l[3]=e=>n.value=e),title:"模组编辑",onOk:p},{default:(0,c.k6)((()=>[(0,c.bF)(b,{"label-align":"left","label-col":{span:4},"wrapper-col":{span:20}},{default:(0,c.k6)((()=>[(0,c.bF)(m,{label:"模组键名"},{default:(0,c.k6)((()=>[(0,c.bF)(d,{value:u.value.key,"onUpdate:value":l[1]||(l[1]=e=>u.value.key=e)},null,8,["value"])])),_:1}),(0,c.bF)(m,{label:"模组名称"},{default:(0,c.k6)((()=>[(0,c.bF)(d,{value:u.value.name,"onUpdate:value":l[2]||(l[2]=e=>u.value.name=e)},null,8,["value"])])),_:1})])),_:1})])),_:1},8,["open"])):(0,c.Q3)("",!0)],64)}}},w=_,x=w,W={class:"h-full bg-gray-100 flex flex-col"},K={class:"p-1 border-b"},I={class:"p-1 h-0 grow overflow-y-auto"},X=["onClick"],L={class:"text-gray-400"},O={class:"mt-1"},U={class:"p-1"},E={__name:"ActuatorManagement",props:["module"],emits:["active"],setup(e,{emit:l}){const a=l,n=e,u=(0,m.KR)(!1),o=(0,m.KR)(null),i=(0,m.KR)([]),s=(0,m.KR)(null);function d(){r()}async function r(){if(i.value=[],null===n.module)return;let e=b.getClient(),l=await e.call("actuator/list",{moduleId:n.module.id});l.sort(((e,l)=>e.name.localeCompare(l.name)));for(let a of l)a.properties=JSON.parse(a.properties);i.value=l}function p(){u.value=!0,o.value={key:"",name:"",aid:"",moduleId:n.module.id,properties:{}}}async function k(){let e=b.getClient(),l=structuredClone(o.value);l.properties=JSON.stringify(l.properties),await e.call("actuator/save",l),u.value=!1,o.value=null,r()}async function f(e){let l=b.getClient();await l.call("actuator/delete",{id:e.id}),r()}function y(e){u.value=!0,o.value=structuredClone(e)}function g(e){s.value=e.id,a("active",e)}return(0,c.sV)(d),(0,c.wB)((()=>n.module),r),(e,l)=>{const a=(0,c.g2)("a-button"),d=(0,c.g2)("a-popconfirm"),r=(0,c.g2)("a-empty"),m=(0,c.g2)("a-input"),b=(0,c.g2)("a-form-item"),C=(0,c.g2)("a-switch"),h=(0,c.g2)("a-form"),F=(0,c.g2)("a-modal");return(0,c.uX)(),(0,c.CE)(c.FK,null,[(0,c.Lk)("div",W,[(0,c.Lk)("div",K,(0,v.v_)(n.module?.name),1),(0,c.Lk)("div",I,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(i.value,(e=>((0,c.uX)(),(0,c.CE)("div",{key:e.id,class:(0,v.C4)(["border bg-white p-2 mb-1 hover:bg-gray-200",{"border-blue-500":e.id===s.value}]),onClick:l=>g(e)},[(0,c.Lk)("div",null,[(0,c.Lk)("div",null,(0,v.v_)(e.name),1),(0,c.Lk)("div",null,[(0,c.Lk)("small",L,"["+(0,v.v_)(e.key)+"]",1)])]),(0,c.Lk)("div",O,[(0,c.bF)(d,{title:"是否删除该设备?",placement:"bottom",onConfirm:l=>f(e)},{default:(0,c.k6)((()=>[(0,c.bF)(a,{size:"small",onClick:l[0]||(l[0]=(0,t.D$)((()=>{}),["stop","prevent"]))},{default:(0,c.k6)((()=>[(0,c.eW)("删除")])),_:1})])),_:2},1032,["onConfirm"]),(0,c.bF)(a,{size:"small",class:"ml-1",onClick:(0,t.D$)((l=>y(e)),["stop","prevent"])},{default:(0,c.k6)((()=>[(0,c.eW)("编辑")])),_:2},1032,["onClick"])])],10,X)))),128)),0===i.value.length?((0,c.uX)(),(0,c.Wv)(r,{key:0,class:"py-5",description:!1})):(0,c.Q3)("",!0)]),(0,c.Lk)("div",U,[null!==n.module?((0,c.uX)(),(0,c.Wv)(a,{key:0,class:"mt-3",type:"primary",block:"",onClick:p},{default:(0,c.k6)((()=>[(0,c.eW)("添加执行设备")])),_:1})):(0,c.Q3)("",!0)])]),null!==o.value?((0,c.uX)(),(0,c.Wv)(F,{key:0,open:u.value,"onUpdate:open":l[4]||(l[4]=e=>u.value=e),title:"执行设备编辑",onOk:k},{default:(0,c.k6)((()=>[(0,c.bF)(h,{"label-align":"left","label-col":{span:4},"wrapper-col":{span:20}},{default:(0,c.k6)((()=>[(0,c.bF)(b,{label:"名称"},{default:(0,c.k6)((()=>[(0,c.bF)(m,{value:o.value.name,"onUpdate:value":l[1]||(l[1]=e=>o.value.name=e)},null,8,["value"])])),_:1}),(0,c.bF)(b,{label:"键名"},{default:(0,c.k6)((()=>[(0,c.bF)(m,{value:o.value.key,"onUpdate:value":l[2]||(l[2]=e=>o.value.key=e)},null,8,["value"])])),_:1}),(0,c.bF)(b,{label:"编码器有效"},{default:(0,c.k6)((()=>[(0,c.bF)(C,{checked:o.value.properties.encoderAvailable,"onUpdate:checked":l[3]||(l[3]=e=>o.value.properties.encoderAvailable=e),checkedValue:1,unCheckedValue:0},null,8,["checked"])])),_:1})])),_:1})])),_:1},8,["open"])):(0,c.Q3)("",!0)],64)}}},A=E,S=A;var R=a(7694);const z={__name:"ActuatorCommandManagement",props:["actuator"],setup(e){const l=e,a=[{key:"name",title:"名称",dataIndex:"name"},{key:"cmdKey",title:"指令",dataIndex:"cmdKey"},{key:"cmdId",title:"指令编码",dataIndex:"cmdId"},{key:"cmdFlags",title:"修饰参数",dataIndex:"cmdFlags"},{key:"fixedParameters",title:"固定参数",dataIndex:"fixedParameters"},{key:"parameters",title:"临时参数",dataIndex:"parameters"},{key:"result",title:"执行结果",dataIndex:"result"},{key:"action",title:"操作",align:"right",width:250}],t=(0,m.KR)([]),n=(0,m.KR)(null),u=(0,m.KR)(!1),o=(0,m.KR)([]);async function i(){let e=b.getClient();o.value=await e.call("actuator-cmd/connection-list"),console.log(o.value),await k()}function s(){u.value=!0,n.value={cmdId:"",cmdKey:"",name:"",parameters:"",fixedParameters:"",actuatorId:l.actuator.id,waitForFinish:0}}async function d(){let e=await navigator.clipboard.readText(),a=null;try{a=JSON.parse(e)}catch(t){return void R.Ay.error("无法解析指令")}delete a.id,a.actuatorId=l.actuator.id,u.value=!0,n.value=a}function r(e){u.value=!0,n.value=structuredClone(e)}async function p(){let e=b.getClient();await e.call("actuator-cmd/save",n.value),u.value=!1,n.value=null,await k()}async function k(){if(t.value=[],null===l.actuator)return;let e=b.getClient(),a=await e.call("actuator-cmd/list",{actuatorId:l.actuator.id});for(let l of a)l.result="";a.sort(((e,l)=>e.name.localeCompare(l.name))),t.value=a}async function f(e){let l=b.getClient();await l.call("actuator-cmd/delete",{id:e.id}),await k()}async function y(e){let l=b.getClient(),a=await l.call("actuator-cmd/execute",e);e.result=a.result}async function g(e){let l=JSON.stringify(e);await navigator.clipboard.writeText(l),R.Ay.success("指令已复制到剪贴板")}return(0,c.sV)(i),(0,c.wB)((()=>l.actuator),k),(e,i)=>{const m=(0,c.g2)("a-button"),k=(0,c.g2)("CopyOutlined"),b=(0,c.g2)("a-popconfirm"),C=(0,c.g2)("a-table"),h=(0,c.g2)("a-select-option"),F=(0,c.g2)("a-select"),_=(0,c.g2)("a-form-item"),w=(0,c.g2)("a-input"),x=(0,c.g2)("a-switch"),W=(0,c.g2)("a-form"),K=(0,c.g2)("a-modal");return(0,c.uX)(),(0,c.CE)(c.FK,null,[(0,c.Lk)("div",null,[(0,c.bF)(C,{dataSource:t.value,columns:a,pagination:!1},{headerCell:(0,c.k6)((({column:e})=>["action"===e.key?((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[null!==l.actuator?((0,c.uX)(),(0,c.Wv)(m,{key:0,class:"mr-1",size:"small",onClick:d},{default:(0,c.k6)((()=>[(0,c.eW)("粘贴")])),_:1})):(0,c.Q3)("",!0),null!==l.actuator?((0,c.uX)(),(0,c.Wv)(m,{key:1,size:"small",onClick:s},{default:(0,c.k6)((()=>[(0,c.eW)("新建")])),_:1})):(0,c.Q3)("",!0)],64)):(0,c.Q3)("",!0)])),bodyCell:(0,c.k6)((({column:e,record:l})=>["action"===e.key?((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[(0,c.bF)(m,{size:"small",class:"mr-1",onClick:e=>g(l)},{default:(0,c.k6)((()=>[(0,c.bF)(k)])),_:2},1032,["onClick"]),(0,c.bF)(m,{size:"small",class:"mr-1",onClick:e=>r(l)},{default:(0,c.k6)((()=>[(0,c.eW)("编辑")])),_:2},1032,["onClick"]),(0,c.bF)(m,{size:"small",class:"mr-1",onClick:e=>y(l)},{default:(0,c.k6)((()=>[(0,c.eW)("执行")])),_:2},1032,["onClick"]),(0,c.bF)(b,{title:"是否删除该指令?",placement:"bottom",onConfirm:e=>f(l)},{default:(0,c.k6)((()=>[(0,c.bF)(m,{size:"small"},{default:(0,c.k6)((()=>[(0,c.eW)("删除")])),_:1})])),_:2},1032,["onConfirm"])],64)):(0,c.Q3)("",!0)])),_:1},8,["dataSource"])]),null!==n.value?((0,c.uX)(),(0,c.Wv)(K,{key:0,open:u.value,"onUpdate:open":i[8]||(i[8]=e=>u.value=e),title:"编辑指令",onOk:p},{default:(0,c.k6)((()=>[(0,c.bF)(W,{"label-align":"left","label-col":{span:4},"wrapper-col":{span:20}},{default:(0,c.k6)((()=>[(0,c.bF)(_,{label:"通信连接"},{default:(0,c.k6)((()=>[(0,c.bF)(F,{value:n.value.connectionKey,"onUpdate:value":i[0]||(i[0]=e=>n.value.connectionKey=e)},{default:(0,c.k6)((()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(o.value,(e=>((0,c.uX)(),(0,c.Wv)(h,{key:e.key,value:e.key},{default:(0,c.k6)((()=>[(0,c.eW)((0,v.v_)(e.name),1)])),_:2},1032,["value"])))),128))])),_:1},8,["value"])])),_:1}),(0,c.bF)(_,{label:"名称"},{default:(0,c.k6)((()=>[(0,c.bF)(w,{value:n.value.name,"onUpdate:value":i[1]||(i[1]=e=>n.value.name=e)},null,8,["value"])])),_:1}),(0,c.bF)(_,{label:"指令"},{default:(0,c.k6)((()=>[(0,c.bF)(w,{value:n.value.cmdKey,"onUpdate:value":i[2]||(i[2]=e=>n.value.cmdKey=e)},null,8,["value"])])),_:1}),(0,c.bF)(_,{label:"指令编码"},{default:(0,c.k6)((()=>[(0,c.bF)(w,{value:n.value.cmdId,"onUpdate:value":i[3]||(i[3]=e=>n.value.cmdId=e)},null,8,["value"])])),_:1}),(0,c.bF)(_,{label:"修饰参数"},{default:(0,c.k6)((()=>[(0,c.bF)(w,{value:n.value.cmdFlags,"onUpdate:value":i[4]||(i[4]=e=>n.value.cmdFlags=e)},null,8,["value"])])),_:1}),(0,c.bF)(_,{label:"固定参数"},{default:(0,c.k6)((()=>[(0,c.bF)(w,{value:n.value.fixedParameters,"onUpdate:value":i[5]||(i[5]=e=>n.value.fixedParameters=e)},null,8,["value"])])),_:1}),(0,c.bF)(_,{label:"临时参数"},{default:(0,c.k6)((()=>[(0,c.bF)(w,{value:n.value.parameters,"onUpdate:value":i[6]||(i[6]=e=>n.value.parameters=e)},null,8,["value"])])),_:1}),(0,c.bF)(_,{label:"阻塞等待"},{default:(0,c.k6)((()=>[(0,c.bF)(x,{checked:n.value.waitForFinish,"onUpdate:checked":i[7]||(i[7]=e=>n.value.waitForFinish=e),checkedValue:1,unCheckedValue:0},null,8,["checked"])])),_:1})])),_:1})])),_:1},8,["open"])):(0,c.Q3)("",!0)],64)}}},Q=z,P=Q,$=(0,c.Lk)("div",{class:"!inline-block !text-white !text-2xl"},"UF-MAN",-1),D={class:"!inline-block !text-white !text-xl ml-12",style:{"line-height":"4rem !important"}},M=(0,c.Lk)("span",null,"指令管理",-1),V=(0,c.Lk)("span",{class:"ml-5 !text-gray-600"},"片段管理",-1),N={__name:"Page",setup(e){const l=(0,m.KR)(null),a=(0,m.KR)(null);function t(e){l.value=e}function n(e){a.value=e}return(e,u)=>{const o=(0,c.g2)("router-link"),i=(0,c.g2)("a-layout-header"),s=(0,c.g2)("a-layout-sider"),d=(0,c.g2)("a-layout-content"),r=(0,c.g2)("a-layout");return(0,c.uX)(),(0,c.Wv)(r,{class:"h-full"},{default:(0,c.k6)((()=>[(0,c.bF)(i,null,{default:(0,c.k6)((()=>[$,(0,c.Lk)("div",D,[M,(0,c.bF)(o,{to:"/snippet"},{default:(0,c.k6)((()=>[V])),_:1})])])),_:1}),(0,c.bF)(r,null,{default:(0,c.k6)((()=>[(0,c.bF)(s,null,{default:(0,c.k6)((()=>[(0,c.bF)(x,{onActive:t})])),_:1}),(0,c.bF)(s,null,{default:(0,c.k6)((()=>[(0,c.bF)(S,{module:l.value,onActive:n},null,8,["module"])])),_:1}),(0,c.bF)(d,{class:"bg-white"},{default:(0,c.k6)((()=>[(0,c.bF)(P,{actuator:a.value},null,8,["actuator"])])),_:1})])),_:1})])),_:1})}}},T=N,j=T;a(4114);const B={key:0,class:"p-5"},J={key:1,class:"h-full p-1 flex flex-col"},q={__name:"Snippet",props:["snippet"],emits:["save","delete","copy"],setup(e,{emit:l}){const a=l,t=e,n=(0,m.KR)(null),u=[{key:"index",title:"序号",width:50,align:"center"},{key:"cmdId",title:"指令",dataIndex:"cmdId"},{key:"params",title:"参数",dataIndex:"params"},{key:"desc",title:"描述"},{key:"action",align:"right",width:230}],o=(0,m.KR)([]);async function i(){await s()}async function s(){o.value=[];let e=b.getClient(),l=await e.call("module/list");for(let t of l){let l={};l.label=t.name,l.value=`module-${t.id}`,l.selectable=!1,l.children=[],o.value.push(l);let a=await e.call("actuator/list",{moduleId:t.id});for(let n of a){let a={};a.label=n.name,a.value=`actuator-${n.id}`,a.selectable=!1,a.children=[],l.children.push(a);let u=await e.call("actuator-cmd/list",{actuatorId:n.id});for(let e of u){let l={};l.label=`${t.name}/${n.name}/${e.name}`,l.value=e.id,l.command=e,a.children.push(l)}a.children.sort(((e,l)=>e.label.localeCompare(l.label)))}l.children.sort(((e,l)=>e.label.localeCompare(l.label)))}o.value.sort(((e,l)=>e.label.localeCompare(l.label)));let a={label:"内置指令",value:"build-in",selectable:!1,children:[]};a.children.push({label:"延时",value:"Delay"}),o.value.push(a)}function d(e,l){""===e.params&&void 0!==l.triggerNode.props.command&&(e.params=l.triggerNode.props.command.parameters)}function r(){let e={};e.key=Date.now(),e.cmdId="",e.params="",e.desc="",n.value.commands.push(e)}function p(e){let l=n.value.commands.indexOf(e);n.value.commands.splice(l,1)}async function k(){let e={};e.id=n.value.id||null,e.name=n.value.name,e.key=n.value.key,e.cmds=JSON.stringify(n.value.commands);let l=b.getClient();await l.call("snippet/save",e),a("save"),R.Ay.success("保存成功")}async function f(){let e=b.getClient();await e.call("snippet/delete",{id:n.value.id}),a("delete"),R.Ay.success("删除成功"),n.value=null}async function y(){let e=b.getClient();await e.call("snippet/execute",{id:n.value.id}),R.Ay.success("执行结束")}async function g(e){let l=b.getClient();await l.call("snippet/execute-step",{cmdId:`${e.cmdId}`,cmdParams:e.params}),R.Ay.success("执行结束")}function C(e,l){let a=n.value.commands.indexOf(e),t=a+l;if(t<0||t>=n.value.commands.length)return;let u=n.value.commands[a];n.value.commands[a]=n.value.commands[t],n.value.commands[t]=u}function h(){n.value.id=null,n.value.name=`${n.value.name} - 复制`,a("copy",n.value)}function F(e){let l=n.value.commands.indexOf(e),a={};a.key=Date.now(),a.cmdId="",a.params="",a.desc="",n.value.commands.splice(l,0,a)}function _(e){let l=n.value.commands.indexOf(e),a={};a.key=Date.now(),a.cmdId="",a.params="",a.desc="",n.value.commands.splice(l+1,0,a)}return(0,c.sV)(i),(0,c.wB)((()=>t.snippet),(e=>{n.value=structuredClone(e)}),{immediate:!0}),(e,l)=>{const a=(0,c.g2)("a-empty"),t=(0,c.g2)("a-input"),i=(0,c.g2)("a-col"),s=(0,c.g2)("a-button"),m=(0,c.g2)("a-popconfirm"),b=(0,c.g2)("a-row"),w=(0,c.g2)("a-tree-select"),x=(0,c.g2)("BorderTopOutlined"),W=(0,c.g2)("BorderBottomOutlined"),K=(0,c.g2)("CaretDownOutlined"),I=(0,c.g2)("CaretUpOutlined"),X=(0,c.g2)("DeleteOutlined"),L=(0,c.g2)("PlayCircleOutlined"),O=(0,c.g2)("a-table");return null===n.value?((0,c.uX)(),(0,c.CE)("div",B,[(0,c.bF)(a)])):((0,c.uX)(),(0,c.CE)("div",J,[(0,c.bF)(b,null,{default:(0,c.k6)((()=>[(0,c.bF)(i,{span:18,class:"flex flex-row"},{default:(0,c.k6)((()=>[(0,c.bF)(t,{placeholder:"名称",value:n.value.name,"onUpdate:value":l[0]||(l[0]=e=>n.value.name=e)},null,8,["value"]),(0,c.bF)(t,{class:"ml-1",placeholder:"键名",value:n.value.key,"onUpdate:value":l[1]||(l[1]=e=>n.value.key=e)},null,8,["value"])])),_:1}),(0,c.bF)(i,{span:6,class:"text-right"},{default:(0,c.k6)((()=>[(0,c.bF)(s,{class:"mr-1",onClick:h},{default:(0,c.k6)((()=>[(0,c.eW)("复制")])),_:1}),(0,c.bF)(m,{title:"是否删除该片段?",placement:"bottom",onConfirm:f},{default:(0,c.k6)((()=>[(0,c.bF)(s,{class:"mr-1"},{default:(0,c.k6)((()=>[(0,c.eW)("删除")])),_:1})])),_:1}),(0,c.bF)(s,{class:"mr-1",type:"primary",onClick:k},{default:(0,c.k6)((()=>[(0,c.eW)("保存")])),_:1}),(0,c.bF)(s,{onClick:y},{default:(0,c.k6)((()=>[(0,c.eW)("运行")])),_:1})])),_:1})])),_:1}),(0,c.bF)(O,{class:"h-0 grow snippet-command-list-table mt-3",size:"small",bordered:"",dataSource:n.value.commands,columns:u,pagination:!1,scroll:{y:"auto"}},{headerCell:(0,c.k6)((({column:e})=>["action"===e.key?((0,c.uX)(),(0,c.Wv)(s,{key:0,size:"small",onClick:r},{default:(0,c.k6)((()=>[(0,c.eW)("添加")])),_:1})):(0,c.Q3)("",!0)])),bodyCell:(0,c.k6)((({column:e,record:l,index:a})=>["index"===e.key?((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[(0,c.eW)((0,v.v_)(a+1),1)],64)):(0,c.Q3)("",!0),"cmdId"===e.key?((0,c.uX)(),(0,c.Wv)(w,{key:1,class:"w-full",value:l.cmdId,"onUpdate:value":e=>l.cmdId=e,"tree-data":o.value,dropdownMatchSelectWidth:!1,onChange:(e,a,t)=>d(l,t)},{title:(0,c.k6)((e=>[(0,c.eW)((0,v.v_)(void 0===e.isLeaf?e.label:e.label.split("/").pop()),1)])),_:2},1032,["value","onUpdate:value","tree-data","onChange"])):(0,c.Q3)("",!0),"params"===e.key?((0,c.uX)(),(0,c.Wv)(t,{key:2,value:l.params,"onUpdate:value":e=>l.params=e,placeholder:"参数"},null,8,["value","onUpdate:value"])):(0,c.Q3)("",!0),"desc"===e.key?((0,c.uX)(),(0,c.Wv)(t,{key:3,value:l.desc,"onUpdate:value":e=>l.desc=e,placeholder:"描述"},null,8,["value","onUpdate:value"])):(0,c.Q3)("",!0),"action"===e.key?((0,c.uX)(),(0,c.CE)(c.FK,{key:4},[(0,c.bF)(s,{size:"small",class:"mr-1",onClick:e=>F(l)},{default:(0,c.k6)((()=>[(0,c.bF)(x)])),_:2},1032,["onClick"]),(0,c.bF)(s,{size:"small",class:"mr-1",onClick:e=>_(l)},{default:(0,c.k6)((()=>[(0,c.bF)(W)])),_:2},1032,["onClick"]),(0,c.bF)(s,{size:"small",class:"mr-1",onClick:e=>C(l,1)},{default:(0,c.k6)((()=>[(0,c.bF)(K)])),_:2},1032,["onClick"]),(0,c.bF)(s,{size:"small",class:"mr-1",onClick:e=>C(l,-1)},{default:(0,c.k6)((()=>[(0,c.bF)(I)])),_:2},1032,["onClick"]),(0,c.bF)(m,{title:"是否删除该步骤?",placement:"bottom",onConfirm:e=>p(l)},{default:(0,c.k6)((()=>[(0,c.bF)(s,{size:"small",class:"ml-1"},{default:(0,c.k6)((()=>[(0,c.bF)(X)])),_:1})])),_:2},1032,["onConfirm"]),(0,c.bF)(s,{size:"small",class:"ml-1",onClick:e=>g(l)},{default:(0,c.k6)((()=>[(0,c.bF)(L)])),_:2},1032,["onClick"])],64)):(0,c.Q3)("",!0)])),_:1},8,["dataSource"])]))}}},G=q,H=G,Y=(0,c.Lk)("div",{class:"!inline-block !text-white !text-2xl"},"UF-MAN",-1),Z={class:"!inline-block !text-white !text-xl ml-12",style:{"line-height":"4rem !important"}},ee=(0,c.Lk)("span",{class:"!text-gray-600"},"指令管理",-1),le=(0,c.Lk)("span",{class:"ml-5"},"片段管理",-1),ae={class:"h-full bg-gray-100 p-1 flex flex-col"},te={class:"h-0 grow overflow-y-auto"},ne={class:"mb-1"},ue={__name:"Page",setup(e){const l=(0,m.KR)(null),a=(0,m.KR)([]),t=(0,m.KR)([]);async function n(){s()}function u(e,t){if(!t.node.isLeaf)return;let n=a.value.find((e=>e.id===t.node.key)),u=structuredClone(n);u.commands=JSON.parse(u.cmds),l.value=u}function o(){l.value={name:"",cmds:"[]",commands:[],key:""}}function i(e){l.value=e}async function s(){let e=b.getClient(),l=await e.call("snippet/list");l.sort(((e,l)=>e.name.localeCompare(l.name))),a.value=l;let n=[];for(let a of l){let e=a.name.split("/"),l=e.pop(),t=n;for(let a=0;ae.title===l));n||(n={title:l,key:e.slice(0,a+1).join("/")},t.push(n)),t=n.children=n.children||[]}t.push({title:l,key:a.id,isLeaf:!0}),t.sort(((e,l)=>e.isLeaf&&!l.isLeaf?1:!e.isLeaf&&l.isLeaf?-1:e.title.localeCompare(l.title)))}t.value=n}return(0,c.sV)(n),(e,a)=>{const n=(0,c.g2)("router-link"),d=(0,c.g2)("a-layout-header"),r=(0,c.g2)("a-directory-tree"),m=(0,c.g2)("a-button"),v=(0,c.g2)("a-layout-sider"),p=(0,c.g2)("a-layout-content"),k=(0,c.g2)("a-layout");return(0,c.uX)(),(0,c.Wv)(k,{class:"h-full"},{default:(0,c.k6)((()=>[(0,c.bF)(d,null,{default:(0,c.k6)((()=>[Y,(0,c.Lk)("div",Z,[(0,c.bF)(n,{to:"/device"},{default:(0,c.k6)((()=>[ee])),_:1}),le])])),_:1}),(0,c.bF)(k,null,{default:(0,c.k6)((()=>[(0,c.bF)(v,{width:300},{default:(0,c.k6)((()=>[(0,c.Lk)("div",ae,[(0,c.Lk)("div",te,[(0,c.bF)(r,{"tree-data":t.value,onSelect:u},null,8,["tree-data"])]),(0,c.Lk)("div",ne,[(0,c.bF)(m,{class:"mt-3",type:"primary",block:"",onClick:o},{default:(0,c.k6)((()=>[(0,c.eW)("添加")])),_:1})])])])),_:1}),(0,c.bF)(p,{class:"bg-white"},{default:(0,c.k6)((()=>[(0,c.bF)(H,{snippet:l.value,onSave:s,onDelete:s,onCopy:i},null,8,["snippet"])])),_:1})])),_:1})])),_:1})}}},oe=ue,ie=oe,ce={__name:"Page",setup(e){const l=[{title:"项目",dataIndex:"comment",key:"comment"},{title:"值",dataIndex:"value",key:"value"},{title:"操作",key:"action",align:"right"}],a=(0,m.KR)([]);async function t(){let e=b.getClient(),l=await e.call("option/list");a.value=l}async function n(){a.value=[];let e=b.getClient(),l=await e.call("option/list");a.value=l,R.Ay.success("刷新成功")}async function u(e){let l=b.getClient();await l.call("option/update",e),R.Ay.success("更新成功")}return(0,c.sV)(t),(e,t)=>{const o=(0,c.g2)("a-button"),i=(0,c.g2)("a-switch"),s=(0,c.g2)("a-input"),d=(0,c.g2)("a-table");return(0,c.uX)(),(0,c.CE)("div",null,[(0,c.bF)(d,{dataSource:a.value,columns:l,pagination:!1},{headerCell:(0,c.k6)((({column:e})=>["action"==e.key?((0,c.uX)(),(0,c.Wv)(o,{key:0,onClick:n},{default:(0,c.k6)((()=>[(0,c.eW)("刷新")])),_:1})):(0,c.Q3)("",!0)])),bodyCell:(0,c.k6)((({column:e,record:l})=>["value"===e.key?((0,c.uX)(),(0,c.CE)(c.FK,{key:0},["boolean"===l.dataType?((0,c.uX)(),(0,c.Wv)(i,{key:0,checked:l.value,"onUpdate:checked":e=>l.value=e,"checked-value":"1","unChecked-value":"0"},null,8,["checked","onUpdate:checked"])):((0,c.uX)(),(0,c.Wv)(s,{key:1,value:l.value,"onUpdate:value":e=>l.value=e,suffix:l.unit},null,8,["value","onUpdate:value","suffix"]))],64)):(0,c.Q3)("",!0),"action"===e.key?((0,c.uX)(),(0,c.Wv)(o,{key:1,onClick:e=>u(l)},{default:(0,c.k6)((()=>[(0,c.eW)("更新")])),_:2},1032,["onClick"])):(0,c.Q3)("",!0)])),_:1},8,["dataSource"])])}}},se=ce,de=se,re=(0,t.Ef)(r);re.use((0,n.Ey)()),re.use((0,u.aE)({routes:[{name:"home",path:"/",component:j},{name:"device",path:"/device",component:j},{name:"snippet",path:"/snippet",component:ie},{name:"setting",path:"/setting",component:de}],history:(0,u.Bt)()})),re.use(o.Ay);for(let me in i)re.component(me,i[me]);re.mount("#app")}},l={};function a(t){var n=l[t];if(void 0!==n)return n.exports;var u=l[t]={exports:{}};return e[t].call(u.exports,u,u.exports,a),u.exports}a.m=e,(()=>{var e=[];a.O=(l,t,n,u)=>{if(!t){var o=1/0;for(d=0;d=u)&&Object.keys(a.O).every((e=>a.O[e](t[c])))?t.splice(c--,1):(i=!1,u0&&e[d-1][2]>u;d--)e[d]=e[d-1];e[d]=[t,n,u]}})(),(()=>{a.n=e=>{var l=e&&e.__esModule?()=>e["default"]:()=>e;return a.d(l,{a:l}),l}})(),(()=>{a.d=(e,l)=>{for(var t in l)a.o(l,t)&&!a.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:l[t]})}})(),(()=>{a.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()})(),(()=>{a.o=(e,l)=>Object.prototype.hasOwnProperty.call(e,l)})(),(()=>{a.r=e=>{"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}})(),(()=>{var e={524:0};a.O.j=l=>0===e[l];var l=(l,t)=>{var n,u,[o,i,c]=t,s=0;if(o.some((l=>0!==e[l]))){for(n in i)a.o(i,n)&&(a.m[n]=i[n]);if(c)var d=c(a)}for(l&&l(t);sa(7481)));t=a.O(t)})(); -//# sourceMappingURL=app.66d72d84.js.map \ No newline at end of file diff --git a/src/main/resources/static/uf/js/app.66d72d84.js.map b/src/main/resources/static/uf/js/app.66d72d84.js.map deleted file mode 100644 index ce6b304..0000000 --- a/src/main/resources/static/uf/js/app.66d72d84.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/app.66d72d84.js","mappings":"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","sources":["webpack://web/./src/App.vue","webpack://web/./src/App.vue?7ccd","webpack://web/./src/utils/ApiClient.js","webpack://web/./src/pages/device/ModuleManagement.vue","webpack://web/./src/pages/device/ModuleManagement.vue?e049","webpack://web/./src/pages/device/ActuatorManagement.vue","webpack://web/./src/pages/device/ActuatorManagement.vue?c721","webpack://web/./src/pages/device/ActuatorCommandManagement.vue","webpack://web/./src/pages/device/ActuatorCommandManagement.vue?2bc5","webpack://web/./src/pages/device/Page.vue","webpack://web/./src/pages/device/Page.vue?c6e1","webpack://web/./src/pages/snippet/Snippet.vue","webpack://web/./src/pages/snippet/Snippet.vue?abc1","webpack://web/./src/pages/snippet/Page.vue","webpack://web/./src/pages/snippet/Page.vue?2868","webpack://web/./src/pages/setting/Page.vue","webpack://web/./src/pages/setting/Page.vue?7204","webpack://web/./src/main.js","webpack://web/webpack/bootstrap","webpack://web/webpack/runtime/chunk loaded","webpack://web/webpack/runtime/compat get default export","webpack://web/webpack/runtime/define property getters","webpack://web/webpack/runtime/global","webpack://web/webpack/runtime/hasOwnProperty shorthand","webpack://web/webpack/runtime/make namespace object","webpack://web/webpack/runtime/jsonp chunk loading","webpack://web/webpack/startup"],"sourcesContent":["\n","import script from \"./App.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./App.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import axios from 'axios';\r\nimport { Modal } from 'ant-design-vue';\r\nexport default class ApiClient {\r\n // client instance\r\n static client = null;\r\n\r\n /**\r\n * get client instance\r\n * @returns {ApiClient}\r\n */\r\n static getClient() {\r\n if (ApiClient.client === null) {\r\n ApiClient.client = new ApiClient();\r\n }\r\n return ApiClient.client;\r\n }\r\n\r\n // constructor\r\n constructor() {\r\n \r\n }\r\n\r\n // call api\r\n async call( name, params={}, callback=null ) {\r\n let headers = {};\r\n let baseURL = `http://${window.location.hostname}/api`;\r\n const response = await axios.post(`${baseURL}/${name}`, params, {\r\n headers : headers,\r\n });\r\n\r\n if ( !response.data.success ) {\r\n if ( null !== callback ) {\r\n return Modal.error({title:'系统错误', content: response.data.message});\r\n } else {\r\n throw new Error(response.data.message);\r\n }\r\n }\r\n\r\n if ( null !== callback ) {\r\n callback(response.data.data);\r\n }\r\n return response.data.data;\r\n }\r\n\r\n async snippetExecute( key, params ) {\r\n return this.call('snippet/execute-by-key', {key:key, params:params});\r\n }\r\n}","\r\n","import script from \"./ModuleManagement.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./ModuleManagement.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n","import script from \"./ActuatorManagement.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./ActuatorManagement.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n","import script from \"./ActuatorCommandManagement.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./ActuatorCommandManagement.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n","import script from \"./Page.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./Page.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n\r\n","import script from \"./Snippet.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./Snippet.vue?vue&type=script&setup=true&lang=js\"\n\nimport \"./Snippet.vue?vue&type=style&index=0&id=30324df0&lang=css\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n","import script from \"./Page.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./Page.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n","import script from \"./Page.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./Page.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { createApp } from 'vue'\nimport { createPinia } from 'pinia'\nimport { createRouter, createWebHashHistory } from 'vue-router'\nimport Antd from 'ant-design-vue';\nimport * as AntdIcons from '@ant-design/icons-vue'\nimport App from './App.vue'\nimport './styles/tailwindcss.css';\nimport 'ant-design-vue/dist/reset.css';\nimport './styles/app.css';\n\nimport PageDevice from './pages/device/Page.vue';\nimport PageSnippet from './pages/snippet/Page.vue';\nimport PageSetting from './pages/setting/Page.vue';\nconst app = createApp(App);\napp.use(createPinia());\napp.use(createRouter({\n routes : [\n { name:'home', path:'/', component:PageDevice },\n { name:'device', path:'/device', component:PageDevice},\n { name:'snippet', path:'/snippet', component:PageSnippet},\n { name:'setting', path:'/setting', component:PageSetting}\n ],\n history : createWebHashHistory()\n}));\napp.use(Antd);\nfor ( let icon in AntdIcons ) {\n app.component(icon, AntdIcons[icon]);\n}\napp.mount('#app');\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunkweb\"] = globalThis[\"webpackChunkweb\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [504], () => (__webpack_require__(7481)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["mounted","document","title","onMounted","__exports__","ApiClient","getClient","client","constructor","call","name","params","callback","headers","baseURL","window","location","hostname","response","axios","post","data","success","Modal","error","content","message","Error","snippetExecute","key","this","_defineProperty","emits","__emit","open","ref","edit","list","activeItemId","actionRefresh","async","value","actionCreate","actionEditOk","actionDelete","item","id","actionEdit","structuredClone","actionActive","props","__props","module","items","moduleId","sort","a","b","localeCompare","properties","JSON","parse","aid","stringify","watch","columns","dataIndex","align","width","dataSource","editOpen","connections","console","log","cmdId","cmdKey","parameters","fixedParameters","actuatorId","actuator","waitForFinish","actionPaste","command","navigator","clipboard","readText","e","result","actionExec","record","actionCopy","writeText","activeModule","activeActuator","actionModuleActive","actionActuatorActive","snippet","commandColumns","commandOptions","refreshCommandOptionData","modules","moduleItem","label","selectable","children","push","actuators","actuatorItem","commands","option","buildInCmds","actionSnippetCommandChange","extra","undefined","triggerNode","actionSnippetCommandAdd","Date","now","desc","actionSnippetCommandDelete","index","indexOf","splice","actionSnippetSave","cmds","actionSnippetDelete","actionSnippetExecute","actionSnippetCommandExecute","cmdParams","actionSnippetCommandMove","offset","targetIndex","length","tmp","actionSnippetCopy","actionSnippetCommandInsertBefore","actionSnippetCommandInsertAfter","immediate","activeSnippet","snippets","snippetTreeData","actionActiveSnippet","keys","event","node","isLeaf","find","tree","path","split","pop","parent","i","pname","child","slice","join","options","actionUpdate","app","createApp","App","use","createPinia","createRouter","routes","component","PageDevice","PageSnippet","PageSetting","history","createWebHashHistory","Antd","icon","AntdIcons","mount","__webpack_module_cache__","__webpack_require__","cachedModule","exports","__webpack_modules__","m","deferred","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","Object","every","r","n","getter","__esModule","d","definition","o","defineProperty","enumerable","get","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/uf/js/app.98f78643.js b/src/main/resources/static/uf/js/app.98f78643.js new file mode 100644 index 0000000..9153820 --- /dev/null +++ b/src/main/resources/static/uf/js/app.98f78643.js @@ -0,0 +1,2 @@ +(()=>{"use strict";var e={7481:(e,l,a)=>{var t=a(5130),n=a(3367),u=a(1387),o=a(6653),i=a(7900),c=a(6768);const s={__name:"App",setup(e){function l(){document.title="UF-Man"}return(0,c.sV)(l),(e,l)=>{const a=(0,c.g2)("router-view");return(0,c.uX)(),(0,c.Wv)(a)}}},d=s,r=d;a(4529);var v=a(144),m=(a(4979),a(1678),a(4232)),p=a(1114),k=a(8355),f=a(9804);class b{static getClient(){return null===b.client&&(b.client=new b),b.client}constructor(){}async call(e,l={},a=null){let t={},n=`http://${window.location.hostname}/api`;const u=await k.A.post(`${n}/${e}`,l,{headers:t});if(!u.data.success){if(null!==a)return f.A.error({title:"系统错误",content:u.data.message});throw new Error(u.data.message)}return null!==a&&a(u.data.data),u.data.data}async snippetExecute(e,l){return this.call("snippet/execute-by-key",{key:e,params:l})}}(0,p.A)(b,"client",null);const y={class:"h-full bg-gray-500 p-1 flex flex-col"},g={class:"h-0 grow"},C=["onClick"],F={class:"text-gray-400"},h={class:"mt-1"},_={__name:"ModuleManagement",emits:["active"],setup(e,{emit:l}){const a=l,n=(0,v.KR)(!1),u=(0,v.KR)(null),o=(0,v.KR)([]),i=(0,v.KR)(null);function s(){d()}async function d(){let e=b.getClient();o.value=[],o.value=await e.call("module/list")}function r(){n.value=!0,u.value={key:"",name:""}}async function p(){let e=b.getClient();await e.call("module/save",u.value),n.value=!1,u.value=null,d()}async function k(e){let l=b.getClient();await l.call("module/delete",{id:e.id}),d(),e.id===i.value&&(i.value=null,a("active",null))}function f(e){n.value=!0,u.value=structuredClone(e)}function _(e){i.value=e.id,a("active",e)}return(0,c.sV)(s),(e,l)=>{const a=(0,c.g2)("a-button"),s=(0,c.g2)("a-popconfirm"),d=(0,c.g2)("a-input"),v=(0,c.g2)("a-form-item"),b=(0,c.g2)("a-form"),w=(0,c.g2)("a-modal");return(0,c.uX)(),(0,c.CE)(c.FK,null,[(0,c.Lk)("div",y,[(0,c.Lk)("div",g,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(o.value,(e=>((0,c.uX)(),(0,c.CE)("div",{key:e.id,class:(0,m.C4)(["border bg-white p-2 mb-1 hover:bg-gray-200",{"border-blue-500":e.id===i.value}]),onClick:l=>_(e)},[(0,c.Lk)("div",null,[(0,c.eW)((0,m.v_)(e.name)+" ",1),(0,c.Lk)("small",F,"["+(0,m.v_)(e.key)+"]",1)]),(0,c.Lk)("div",h,[(0,c.bF)(s,{title:"是否删除该模组?",placement:"bottom",onConfirm:l=>k(e)},{default:(0,c.k6)((()=>[(0,c.bF)(a,{size:"small",onClick:l[0]||(l[0]=(0,t.D$)((()=>{}),["stop","prevent"]))},{default:(0,c.k6)((()=>[(0,c.eW)("删除")])),_:1})])),_:2},1032,["onConfirm"]),(0,c.bF)(a,{size:"small",class:"ml-1",onClick:(0,t.D$)((l=>f(e)),["stop","prevent"])},{default:(0,c.k6)((()=>[(0,c.eW)("编辑")])),_:2},1032,["onClick"])])],10,C)))),128)),(0,c.bF)(a,{class:"mt-3",type:"primary",block:"",onClick:r},{default:(0,c.k6)((()=>[(0,c.eW)("添加模组")])),_:1})])]),null!==u.value?((0,c.uX)(),(0,c.Wv)(w,{key:0,open:n.value,"onUpdate:open":l[3]||(l[3]=e=>n.value=e),title:"模组编辑",onOk:p},{default:(0,c.k6)((()=>[(0,c.bF)(b,{"label-align":"left","label-col":{span:4},"wrapper-col":{span:20}},{default:(0,c.k6)((()=>[(0,c.bF)(v,{label:"模组键名"},{default:(0,c.k6)((()=>[(0,c.bF)(d,{value:u.value.key,"onUpdate:value":l[1]||(l[1]=e=>u.value.key=e)},null,8,["value"])])),_:1}),(0,c.bF)(v,{label:"模组名称"},{default:(0,c.k6)((()=>[(0,c.bF)(d,{value:u.value.name,"onUpdate:value":l[2]||(l[2]=e=>u.value.name=e)},null,8,["value"])])),_:1})])),_:1})])),_:1},8,["open"])):(0,c.Q3)("",!0)],64)}}},w=_,x=w,W={class:"h-full bg-gray-100 flex flex-col"},K={class:"p-1 border-b"},I={class:"p-1 h-0 grow overflow-y-auto"},X=["onClick"],O={class:"text-gray-400"},U={class:"mt-1"},L={class:"p-1"},E={__name:"ActuatorManagement",props:["module"],emits:["active"],setup(e,{emit:l}){const a=l,n=e,u=(0,v.KR)(!1),o=(0,v.KR)(null),i=(0,v.KR)([]),s=(0,v.KR)(null);function d(){r()}async function r(){if(i.value=[],null===n.module)return;let e=b.getClient(),l=await e.call("actuator/list",{moduleId:n.module.id});l.sort(((e,l)=>e.name.localeCompare(l.name)));for(let a of l)a.properties=JSON.parse(a.properties);i.value=l}function p(){u.value=!0,o.value={key:"",name:"",aid:"",type:"other",moduleId:n.module.id,properties:{}}}async function k(){let e=!o.value.id,l=b.getClient(),a=structuredClone(o.value);a.properties=JSON.stringify(a.properties);let t=await l.call("actuator/save",a);a.id=t.id,a.properties=JSON.parse(a.properties),u.value=!1,o.value=null,"stepper-motor"===a.type&&e&&await f(a),r()}async function f(e){let l=b.getClient(),a=[{name:"电机移动至零点",cmdKey:"motor_easy_move_to_zero",cmdId:"0214",parameters:"-1"}];for(let t of a)t.actuatorId=e.id,t.connectionKey="zcancmder",t.cmdFlags=e.properties.mid,t.fixedParameters=t.parameters,t.waitForFinish=0,await l.call("actuator-cmd/save",t)}async function y(e){let l=b.getClient();await l.call("actuator/delete",{id:e.id}),r()}function g(e){u.value=!0,o.value=structuredClone(e)}function C(e){s.value=e.id,a("active",e)}return(0,c.sV)(d),(0,c.wB)((()=>n.module),r),(e,l)=>{const a=(0,c.g2)("a-button"),d=(0,c.g2)("a-popconfirm"),r=(0,c.g2)("a-empty"),v=(0,c.g2)("a-input"),f=(0,c.g2)("a-form-item"),b=(0,c.g2)("a-select-option"),F=(0,c.g2)("a-select"),h=(0,c.g2)("a-switch"),_=(0,c.g2)("a-input-number"),w=(0,c.g2)("a-form"),x=(0,c.g2)("a-modal");return(0,c.uX)(),(0,c.CE)(c.FK,null,[(0,c.Lk)("div",W,[(0,c.Lk)("div",K,(0,m.v_)(n.module?.name),1),(0,c.Lk)("div",I,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(i.value,(e=>((0,c.uX)(),(0,c.CE)("div",{key:e.id,class:(0,m.C4)(["border bg-white p-2 mb-1 hover:bg-gray-200",{"border-blue-500":e.id===s.value}]),onClick:l=>C(e)},[(0,c.Lk)("div",null,[(0,c.Lk)("div",null,(0,m.v_)(e.name),1),(0,c.Lk)("div",null,[(0,c.Lk)("small",O,"["+(0,m.v_)(e.key)+"]",1)])]),(0,c.Lk)("div",U,[(0,c.bF)(d,{title:"是否删除该设备?",placement:"bottom",onConfirm:l=>y(e)},{default:(0,c.k6)((()=>[(0,c.bF)(a,{size:"small",onClick:l[0]||(l[0]=(0,t.D$)((()=>{}),["stop","prevent"]))},{default:(0,c.k6)((()=>[(0,c.eW)("删除")])),_:1})])),_:2},1032,["onConfirm"]),(0,c.bF)(a,{size:"small",class:"ml-1",onClick:(0,t.D$)((l=>g(e)),["stop","prevent"])},{default:(0,c.k6)((()=>[(0,c.eW)("编辑")])),_:2},1032,["onClick"])])],10,X)))),128)),0===i.value.length?((0,c.uX)(),(0,c.Wv)(r,{key:0,class:"py-5",description:!1})):(0,c.Q3)("",!0)]),(0,c.Lk)("div",L,[null!==n.module?((0,c.uX)(),(0,c.Wv)(a,{key:0,class:"mt-3",type:"primary",block:"",onClick:p},{default:(0,c.k6)((()=>[(0,c.eW)("添加执行设备")])),_:1})):(0,c.Q3)("",!0)])]),null!==o.value?((0,c.uX)(),(0,c.Wv)(x,{key:0,open:u.value,"onUpdate:open":l[7]||(l[7]=e=>u.value=e),title:"执行设备编辑",onOk:k},{default:(0,c.k6)((()=>[(0,c.bF)(w,{"label-align":"left","label-col":{span:4},"wrapper-col":{span:20}},{default:(0,c.k6)((()=>[(0,c.bF)(f,{label:"名称"},{default:(0,c.k6)((()=>[(0,c.bF)(v,{value:o.value.name,"onUpdate:value":l[1]||(l[1]=e=>o.value.name=e)},null,8,["value"])])),_:1}),(0,c.bF)(f,{label:"键名"},{default:(0,c.k6)((()=>[(0,c.bF)(v,{value:o.value.key,"onUpdate:value":l[2]||(l[2]=e=>o.value.key=e)},null,8,["value"])])),_:1}),(0,c.bF)(f,{label:"类型"},{default:(0,c.k6)((()=>[(0,c.bF)(F,{value:o.value.type,"onUpdate:value":l[3]||(l[3]=e=>o.value.type=e)},{default:(0,c.k6)((()=>[(0,c.bF)(b,{value:"stepper-motor"},{default:(0,c.k6)((()=>[(0,c.eW)("步进电机")])),_:1}),(0,c.bF)(b,{value:"other"},{default:(0,c.k6)((()=>[(0,c.eW)("其他")])),_:1})])),_:1},8,["value"])])),_:1}),"stepper-motor"===o.value.type?((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[(0,c.bF)(f,{label:"模块ID"},{default:(0,c.k6)((()=>[(0,c.bF)(v,{value:o.value.properties.mid,"onUpdate:value":l[4]||(l[4]=e=>o.value.properties.mid=e)},null,8,["value"])])),_:1}),(0,c.bF)(f,{label:"编码器有效"},{default:(0,c.k6)((()=>[(0,c.bF)(h,{checked:o.value.properties.encoderAvailable,"onUpdate:checked":l[5]||(l[5]=e=>o.value.properties.encoderAvailable=e),checkedValue:1,unCheckedValue:0},null,8,["checked"])])),_:1}),(0,c.bF)(f,{label:"偏移量"},{default:(0,c.k6)((()=>[(0,c.bF)(_,{class:"!w-full",value:o.value.properties.offset,"onUpdate:value":l[6]||(l[6]=e=>o.value.properties.offset=e)},null,8,["value"])])),_:1})],64)):(0,c.Q3)("",!0)])),_:1})])),_:1},8,["open"])):(0,c.Q3)("",!0)],64)}}},S=E,A=S;var z=a(7694);const R={__name:"ActuatorCommandManagement",props:["actuator"],setup(e){const l=e,a=[{key:"name",title:"名称",dataIndex:"name"},{key:"cmdKey",title:"指令",dataIndex:"cmdKey"},{key:"cmdId",title:"指令编码",dataIndex:"cmdId"},{key:"cmdFlags",title:"修饰参数",dataIndex:"cmdFlags"},{key:"fixedParameters",title:"固定参数",dataIndex:"fixedParameters"},{key:"parameters",title:"临时参数",dataIndex:"parameters"},{key:"result",title:"执行结果",dataIndex:"result"},{key:"action",title:"操作",align:"right",width:250}],t=(0,v.KR)([]),n=(0,v.KR)(null),u=(0,v.KR)(!1),o=(0,v.KR)([]);async function i(){let e=b.getClient();o.value=await e.call("actuator-cmd/connection-list"),console.log(o.value),await k()}function s(){u.value=!0,n.value={cmdId:"",cmdKey:"",name:"",parameters:"",fixedParameters:"",actuatorId:l.actuator.id,waitForFinish:0}}async function d(){let e=await navigator.clipboard.readText(),a=null;try{a=JSON.parse(e)}catch(t){return void z.Ay.error("无法解析指令")}delete a.id,a.actuatorId=l.actuator.id,u.value=!0,n.value=a}function r(e){u.value=!0,n.value=structuredClone(e)}async function p(){let e=b.getClient();await e.call("actuator-cmd/save",n.value),u.value=!1,n.value=null,await k()}async function k(){if(t.value=[],null===l.actuator)return;let e=b.getClient(),a=await e.call("actuator-cmd/list",{actuatorId:l.actuator.id});for(let l of a)l.result="";a.sort(((e,l)=>e.name.localeCompare(l.name))),t.value=a}async function f(e){let l=b.getClient();await l.call("actuator-cmd/delete",{id:e.id}),await k()}async function y(e){let l=b.getClient(),a=await l.call("actuator-cmd/execute",e);e.result=a.result}async function g(e){let l=JSON.stringify(e);await navigator.clipboard.writeText(l),z.Ay.success("指令已复制到剪贴板")}return(0,c.sV)(i),(0,c.wB)((()=>l.actuator),k),(e,i)=>{const v=(0,c.g2)("a-button"),k=(0,c.g2)("CopyOutlined"),b=(0,c.g2)("a-popconfirm"),C=(0,c.g2)("a-table"),F=(0,c.g2)("a-select-option"),h=(0,c.g2)("a-select"),_=(0,c.g2)("a-form-item"),w=(0,c.g2)("a-input"),x=(0,c.g2)("a-form"),W=(0,c.g2)("a-modal");return(0,c.uX)(),(0,c.CE)(c.FK,null,[(0,c.Lk)("div",null,[(0,c.bF)(C,{dataSource:t.value,columns:a,pagination:!1},{headerCell:(0,c.k6)((({column:e})=>["action"===e.key?((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[null!==l.actuator?((0,c.uX)(),(0,c.Wv)(v,{key:0,class:"mr-1",size:"small",onClick:d},{default:(0,c.k6)((()=>[(0,c.eW)("粘贴")])),_:1})):(0,c.Q3)("",!0),null!==l.actuator?((0,c.uX)(),(0,c.Wv)(v,{key:1,size:"small",onClick:s},{default:(0,c.k6)((()=>[(0,c.eW)("新建")])),_:1})):(0,c.Q3)("",!0)],64)):(0,c.Q3)("",!0)])),bodyCell:(0,c.k6)((({column:e,record:l})=>["action"===e.key?((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[(0,c.bF)(v,{size:"small",class:"mr-1",onClick:e=>g(l)},{default:(0,c.k6)((()=>[(0,c.bF)(k)])),_:2},1032,["onClick"]),(0,c.bF)(v,{size:"small",class:"mr-1",onClick:e=>r(l)},{default:(0,c.k6)((()=>[(0,c.eW)("编辑")])),_:2},1032,["onClick"]),(0,c.bF)(v,{size:"small",class:"mr-1",onClick:e=>y(l)},{default:(0,c.k6)((()=>[(0,c.eW)("执行")])),_:2},1032,["onClick"]),(0,c.bF)(b,{title:"是否删除该指令?",placement:"bottom",onConfirm:e=>f(l)},{default:(0,c.k6)((()=>[(0,c.bF)(v,{size:"small"},{default:(0,c.k6)((()=>[(0,c.eW)("删除")])),_:1})])),_:2},1032,["onConfirm"])],64)):(0,c.Q3)("",!0)])),_:1},8,["dataSource"])]),null!==n.value?((0,c.uX)(),(0,c.Wv)(W,{key:0,open:u.value,"onUpdate:open":i[7]||(i[7]=e=>u.value=e),title:"编辑指令",onOk:p},{default:(0,c.k6)((()=>[(0,c.bF)(x,{"label-align":"left","label-col":{span:4},"wrapper-col":{span:20}},{default:(0,c.k6)((()=>[(0,c.bF)(_,{label:"通信连接"},{default:(0,c.k6)((()=>[(0,c.bF)(h,{value:n.value.connectionKey,"onUpdate:value":i[0]||(i[0]=e=>n.value.connectionKey=e)},{default:(0,c.k6)((()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(o.value,(e=>((0,c.uX)(),(0,c.Wv)(F,{key:e.key,value:e.key},{default:(0,c.k6)((()=>[(0,c.eW)((0,m.v_)(e.name),1)])),_:2},1032,["value"])))),128))])),_:1},8,["value"])])),_:1}),(0,c.bF)(_,{label:"名称"},{default:(0,c.k6)((()=>[(0,c.bF)(w,{value:n.value.name,"onUpdate:value":i[1]||(i[1]=e=>n.value.name=e)},null,8,["value"])])),_:1}),(0,c.bF)(_,{label:"指令"},{default:(0,c.k6)((()=>[(0,c.bF)(w,{value:n.value.cmdKey,"onUpdate:value":i[2]||(i[2]=e=>n.value.cmdKey=e)},null,8,["value"])])),_:1}),(0,c.bF)(_,{label:"指令编码"},{default:(0,c.k6)((()=>[(0,c.bF)(w,{value:n.value.cmdId,"onUpdate:value":i[3]||(i[3]=e=>n.value.cmdId=e)},null,8,["value"])])),_:1}),(0,c.bF)(_,{label:"修饰参数"},{default:(0,c.k6)((()=>[(0,c.bF)(w,{value:n.value.cmdFlags,"onUpdate:value":i[4]||(i[4]=e=>n.value.cmdFlags=e)},null,8,["value"])])),_:1}),(0,c.bF)(_,{label:"固定参数"},{default:(0,c.k6)((()=>[(0,c.bF)(w,{value:n.value.fixedParameters,"onUpdate:value":i[5]||(i[5]=e=>n.value.fixedParameters=e)},null,8,["value"])])),_:1}),(0,c.bF)(_,{label:"临时参数"},{default:(0,c.k6)((()=>[(0,c.bF)(w,{value:n.value.parameters,"onUpdate:value":i[6]||(i[6]=e=>n.value.parameters=e)},null,8,["value"])])),_:1})])),_:1})])),_:1},8,["open"])):(0,c.Q3)("",!0)],64)}}},Q=R,P=Q,$=(0,c.Lk)("div",{class:"!inline-block !text-white !text-2xl"},"UF-MAN",-1),D={class:"!inline-block !text-white !text-xl ml-12",style:{"line-height":"4rem !important"}},M=(0,c.Lk)("span",null,"指令管理",-1),N=(0,c.Lk)("span",{class:"ml-5 !text-gray-600"},"片段管理",-1),T={__name:"Page",setup(e){const l=(0,v.KR)(null),a=(0,v.KR)(null);function t(e){l.value=e}function n(e){a.value=e}return(e,u)=>{const o=(0,c.g2)("router-link"),i=(0,c.g2)("a-layout-header"),s=(0,c.g2)("a-layout-sider"),d=(0,c.g2)("a-layout-content"),r=(0,c.g2)("a-layout");return(0,c.uX)(),(0,c.Wv)(r,{class:"h-full"},{default:(0,c.k6)((()=>[(0,c.bF)(i,null,{default:(0,c.k6)((()=>[$,(0,c.Lk)("div",D,[M,(0,c.bF)(o,{to:"/snippet"},{default:(0,c.k6)((()=>[N])),_:1})])])),_:1}),(0,c.bF)(r,null,{default:(0,c.k6)((()=>[(0,c.bF)(s,null,{default:(0,c.k6)((()=>[(0,c.bF)(x,{onActive:t})])),_:1}),(0,c.bF)(s,null,{default:(0,c.k6)((()=>[(0,c.bF)(A,{module:l.value,onActive:n},null,8,["module"])])),_:1}),(0,c.bF)(d,{class:"bg-white"},{default:(0,c.k6)((()=>[(0,c.bF)(P,{actuator:a.value},null,8,["actuator"])])),_:1})])),_:1})])),_:1})}}},j=T,V=j;a(4114);const B={key:0,class:"p-5"},J={key:1,class:"h-full p-1 flex flex-col"},q={__name:"Snippet",props:["snippet"],emits:["save","delete","copy"],setup(e,{emit:l}){const a=l,t=e,n=(0,v.KR)(null),u=[{key:"index",title:"序号",width:50,align:"center"},{key:"cmdId",title:"指令",dataIndex:"cmdId"},{key:"params",title:"参数",dataIndex:"params"},{key:"desc",title:"描述"},{key:"action",align:"right",width:230}],o=(0,v.KR)([]);async function i(){await s()}async function s(){o.value=[];let e=b.getClient(),l=await e.call("module/list");for(let t of l){let l={};l.label=t.name,l.value=`module-${t.id}`,l.selectable=!1,l.children=[],o.value.push(l);let a=await e.call("actuator/list",{moduleId:t.id});for(let n of a){let a={};a.label=n.name,a.value=`actuator-${n.id}`,a.selectable=!1,a.children=[],l.children.push(a);let u=await e.call("actuator-cmd/list",{actuatorId:n.id});for(let e of u){let l={};l.label=`${t.name}/${n.name}/${e.name}`,l.value=e.id,l.command=e,a.children.push(l)}a.children.sort(((e,l)=>e.label.localeCompare(l.label)))}l.children.sort(((e,l)=>e.label.localeCompare(l.label)))}o.value.sort(((e,l)=>e.label.localeCompare(l.label)));let a={label:"内置指令",value:"build-in",selectable:!1,children:[]};a.children.push({label:"延时",value:"Delay"}),o.value.push(a)}function d(e,l){""===e.params&&void 0!==l.triggerNode.props.command&&(e.params=l.triggerNode.props.command.parameters)}function r(){let e={};e.key=Date.now(),e.cmdId="",e.params="",e.desc="",n.value.commands.push(e)}function p(e){let l=n.value.commands.indexOf(e);n.value.commands.splice(l,1)}async function k(){let e={};e.id=n.value.id||null,e.name=n.value.name,e.key=n.value.key,e.cmds=JSON.stringify(n.value.commands);let l=b.getClient();await l.call("snippet/save",e),a("save"),z.Ay.success("保存成功")}async function f(){let e=b.getClient();await e.call("snippet/delete",{id:n.value.id}),a("delete"),z.Ay.success("删除成功"),n.value=null}async function y(){let e=b.getClient();await e.call("snippet/execute",{id:n.value.id}),z.Ay.success("执行结束")}async function g(e){let l=b.getClient();await l.call("snippet/execute-step",{cmdId:`${e.cmdId}`,cmdParams:e.params}),z.Ay.success("执行结束")}function C(e,l){let a=n.value.commands.indexOf(e),t=a+l;if(t<0||t>=n.value.commands.length)return;let u=n.value.commands[a];n.value.commands[a]=n.value.commands[t],n.value.commands[t]=u}function F(){n.value.id=null,n.value.name=`${n.value.name} - 复制`,a("copy",n.value)}function h(e){let l=n.value.commands.indexOf(e),a={};a.key=Date.now(),a.cmdId="",a.params="",a.desc="",n.value.commands.splice(l,0,a)}function _(e){let l=n.value.commands.indexOf(e),a={};a.key=Date.now(),a.cmdId="",a.params="",a.desc="",n.value.commands.splice(l+1,0,a)}return(0,c.sV)(i),(0,c.wB)((()=>t.snippet),(e=>{n.value=structuredClone(e)}),{immediate:!0}),(e,l)=>{const a=(0,c.g2)("a-empty"),t=(0,c.g2)("a-input"),i=(0,c.g2)("a-col"),s=(0,c.g2)("a-button"),v=(0,c.g2)("a-popconfirm"),b=(0,c.g2)("a-row"),w=(0,c.g2)("a-tree-select"),x=(0,c.g2)("BorderTopOutlined"),W=(0,c.g2)("BorderBottomOutlined"),K=(0,c.g2)("CaretDownOutlined"),I=(0,c.g2)("CaretUpOutlined"),X=(0,c.g2)("DeleteOutlined"),O=(0,c.g2)("PlayCircleOutlined"),U=(0,c.g2)("a-table");return null===n.value?((0,c.uX)(),(0,c.CE)("div",B,[(0,c.bF)(a)])):((0,c.uX)(),(0,c.CE)("div",J,[(0,c.bF)(b,null,{default:(0,c.k6)((()=>[(0,c.bF)(i,{span:18,class:"flex flex-row"},{default:(0,c.k6)((()=>[(0,c.bF)(t,{placeholder:"名称",value:n.value.name,"onUpdate:value":l[0]||(l[0]=e=>n.value.name=e)},null,8,["value"]),(0,c.bF)(t,{class:"ml-1",placeholder:"键名",value:n.value.key,"onUpdate:value":l[1]||(l[1]=e=>n.value.key=e)},null,8,["value"])])),_:1}),(0,c.bF)(i,{span:6,class:"text-right"},{default:(0,c.k6)((()=>[(0,c.bF)(s,{class:"mr-1",onClick:F},{default:(0,c.k6)((()=>[(0,c.eW)("复制")])),_:1}),(0,c.bF)(v,{title:"是否删除该片段?",placement:"bottom",onConfirm:f},{default:(0,c.k6)((()=>[(0,c.bF)(s,{class:"mr-1"},{default:(0,c.k6)((()=>[(0,c.eW)("删除")])),_:1})])),_:1}),(0,c.bF)(s,{class:"mr-1",type:"primary",onClick:k},{default:(0,c.k6)((()=>[(0,c.eW)("保存")])),_:1}),(0,c.bF)(s,{onClick:y},{default:(0,c.k6)((()=>[(0,c.eW)("运行")])),_:1})])),_:1})])),_:1}),(0,c.bF)(U,{class:"h-0 grow snippet-command-list-table mt-3",size:"small",bordered:"",dataSource:n.value.commands,columns:u,pagination:!1,scroll:{y:"auto"}},{headerCell:(0,c.k6)((({column:e})=>["action"===e.key?((0,c.uX)(),(0,c.Wv)(s,{key:0,size:"small",onClick:r},{default:(0,c.k6)((()=>[(0,c.eW)("添加")])),_:1})):(0,c.Q3)("",!0)])),bodyCell:(0,c.k6)((({column:e,record:l,index:a})=>["index"===e.key?((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[(0,c.eW)((0,m.v_)(a+1),1)],64)):(0,c.Q3)("",!0),"cmdId"===e.key?((0,c.uX)(),(0,c.Wv)(w,{key:1,class:"w-full",value:l.cmdId,"onUpdate:value":e=>l.cmdId=e,"tree-data":o.value,dropdownMatchSelectWidth:!1,onChange:(e,a,t)=>d(l,t)},{title:(0,c.k6)((e=>[(0,c.eW)((0,m.v_)(void 0===e.isLeaf?e.label:e.label.split("/").pop()),1)])),_:2},1032,["value","onUpdate:value","tree-data","onChange"])):(0,c.Q3)("",!0),"params"===e.key?((0,c.uX)(),(0,c.Wv)(t,{key:2,value:l.params,"onUpdate:value":e=>l.params=e,placeholder:"参数"},null,8,["value","onUpdate:value"])):(0,c.Q3)("",!0),"desc"===e.key?((0,c.uX)(),(0,c.Wv)(t,{key:3,value:l.desc,"onUpdate:value":e=>l.desc=e,placeholder:"描述"},null,8,["value","onUpdate:value"])):(0,c.Q3)("",!0),"action"===e.key?((0,c.uX)(),(0,c.CE)(c.FK,{key:4},[(0,c.bF)(s,{size:"small",class:"mr-1",onClick:e=>h(l)},{default:(0,c.k6)((()=>[(0,c.bF)(x)])),_:2},1032,["onClick"]),(0,c.bF)(s,{size:"small",class:"mr-1",onClick:e=>_(l)},{default:(0,c.k6)((()=>[(0,c.bF)(W)])),_:2},1032,["onClick"]),(0,c.bF)(s,{size:"small",class:"mr-1",onClick:e=>C(l,1)},{default:(0,c.k6)((()=>[(0,c.bF)(K)])),_:2},1032,["onClick"]),(0,c.bF)(s,{size:"small",class:"mr-1",onClick:e=>C(l,-1)},{default:(0,c.k6)((()=>[(0,c.bF)(I)])),_:2},1032,["onClick"]),(0,c.bF)(v,{title:"是否删除该步骤?",placement:"bottom",onConfirm:e=>p(l)},{default:(0,c.k6)((()=>[(0,c.bF)(s,{size:"small",class:"ml-1"},{default:(0,c.k6)((()=>[(0,c.bF)(X)])),_:1})])),_:2},1032,["onConfirm"]),(0,c.bF)(s,{size:"small",class:"ml-1",onClick:e=>g(l)},{default:(0,c.k6)((()=>[(0,c.bF)(O)])),_:2},1032,["onClick"])],64)):(0,c.Q3)("",!0)])),_:1},8,["dataSource"])]))}}},G=q,H=G,Y=(0,c.Lk)("div",{class:"!inline-block !text-white !text-2xl"},"UF-MAN",-1),Z={class:"!inline-block !text-white !text-xl ml-12",style:{"line-height":"4rem !important"}},ee=(0,c.Lk)("span",{class:"!text-gray-600"},"指令管理",-1),le=(0,c.Lk)("span",{class:"ml-5"},"片段管理",-1),ae={class:"h-full bg-gray-100 p-1 flex flex-col"},te={class:"h-0 grow overflow-y-auto"},ne={class:"mb-1"},ue={__name:"Page",setup(e){const l=(0,v.KR)(null),a=(0,v.KR)([]),t=(0,v.KR)([]);async function n(){s()}function u(e,t){if(!t.node.isLeaf)return;let n=a.value.find((e=>e.id===t.node.key)),u=structuredClone(n);u.commands=JSON.parse(u.cmds),l.value=u}function o(){l.value={name:"",cmds:"[]",commands:[],key:""}}function i(e){l.value=e}async function s(){let e=b.getClient(),l=await e.call("snippet/list");l.sort(((e,l)=>e.name.localeCompare(l.name))),a.value=l;let n=[];for(let a of l){let e=a.name.split("/"),l=e.pop(),t=n;for(let a=0;ae.title===l));n||(n={title:l,key:e.slice(0,a+1).join("/")},t.push(n)),t=n.children=n.children||[]}t.push({title:l,key:a.id,isLeaf:!0}),t.sort(((e,l)=>e.isLeaf&&!l.isLeaf?1:!e.isLeaf&&l.isLeaf?-1:e.title.localeCompare(l.title)))}t.value=n}return(0,c.sV)(n),(e,a)=>{const n=(0,c.g2)("router-link"),d=(0,c.g2)("a-layout-header"),r=(0,c.g2)("a-directory-tree"),v=(0,c.g2)("a-button"),m=(0,c.g2)("a-layout-sider"),p=(0,c.g2)("a-layout-content"),k=(0,c.g2)("a-layout");return(0,c.uX)(),(0,c.Wv)(k,{class:"h-full"},{default:(0,c.k6)((()=>[(0,c.bF)(d,null,{default:(0,c.k6)((()=>[Y,(0,c.Lk)("div",Z,[(0,c.bF)(n,{to:"/device"},{default:(0,c.k6)((()=>[ee])),_:1}),le])])),_:1}),(0,c.bF)(k,null,{default:(0,c.k6)((()=>[(0,c.bF)(m,{width:300},{default:(0,c.k6)((()=>[(0,c.Lk)("div",ae,[(0,c.Lk)("div",te,[(0,c.bF)(r,{"tree-data":t.value,onSelect:u},null,8,["tree-data"])]),(0,c.Lk)("div",ne,[(0,c.bF)(v,{class:"mt-3",type:"primary",block:"",onClick:o},{default:(0,c.k6)((()=>[(0,c.eW)("添加")])),_:1})])])])),_:1}),(0,c.bF)(p,{class:"bg-white"},{default:(0,c.k6)((()=>[(0,c.bF)(H,{snippet:l.value,onSave:s,onDelete:s,onCopy:i},null,8,["snippet"])])),_:1})])),_:1})])),_:1})}}},oe=ue,ie=oe,ce={__name:"Page",setup(e){const l=[{title:"项目",dataIndex:"comment",key:"comment"},{title:"值",dataIndex:"value",key:"value"},{title:"操作",key:"action",align:"right"}],a=(0,v.KR)([]);async function t(){let e=b.getClient(),l=await e.call("option/list");a.value=l}async function n(){a.value=[];let e=b.getClient(),l=await e.call("option/list");a.value=l,z.Ay.success("刷新成功")}async function u(e){let l=b.getClient();await l.call("option/update",e),z.Ay.success("更新成功")}return(0,c.sV)(t),(e,t)=>{const o=(0,c.g2)("a-button"),i=(0,c.g2)("a-switch"),s=(0,c.g2)("a-input"),d=(0,c.g2)("a-table");return(0,c.uX)(),(0,c.CE)("div",null,[(0,c.bF)(d,{dataSource:a.value,columns:l,pagination:!1},{headerCell:(0,c.k6)((({column:e})=>["action"==e.key?((0,c.uX)(),(0,c.Wv)(o,{key:0,onClick:n},{default:(0,c.k6)((()=>[(0,c.eW)("刷新")])),_:1})):(0,c.Q3)("",!0)])),bodyCell:(0,c.k6)((({column:e,record:l})=>["value"===e.key?((0,c.uX)(),(0,c.CE)(c.FK,{key:0},["boolean"===l.dataType?((0,c.uX)(),(0,c.Wv)(i,{key:0,checked:l.value,"onUpdate:checked":e=>l.value=e,"checked-value":"1","unChecked-value":"0"},null,8,["checked","onUpdate:checked"])):((0,c.uX)(),(0,c.Wv)(s,{key:1,value:l.value,"onUpdate:value":e=>l.value=e,suffix:l.unit},null,8,["value","onUpdate:value","suffix"]))],64)):(0,c.Q3)("",!0),"action"===e.key?((0,c.uX)(),(0,c.Wv)(o,{key:1,onClick:e=>u(l)},{default:(0,c.k6)((()=>[(0,c.eW)("更新")])),_:2},1032,["onClick"])):(0,c.Q3)("",!0)])),_:1},8,["dataSource"])])}}},se=ce,de=se,re=(0,t.Ef)(r);re.use((0,n.Ey)()),re.use((0,u.aE)({routes:[{name:"home",path:"/",component:V},{name:"device",path:"/device",component:V},{name:"snippet",path:"/snippet",component:ie},{name:"setting",path:"/setting",component:de}],history:(0,u.Bt)()})),re.use(o.Ay);for(let ve in i)re.component(ve,i[ve]);re.mount("#app")}},l={};function a(t){var n=l[t];if(void 0!==n)return n.exports;var u=l[t]={exports:{}};return e[t].call(u.exports,u,u.exports,a),u.exports}a.m=e,(()=>{var e=[];a.O=(l,t,n,u)=>{if(!t){var o=1/0;for(d=0;d=u)&&Object.keys(a.O).every((e=>a.O[e](t[c])))?t.splice(c--,1):(i=!1,u0&&e[d-1][2]>u;d--)e[d]=e[d-1];e[d]=[t,n,u]}})(),(()=>{a.n=e=>{var l=e&&e.__esModule?()=>e["default"]:()=>e;return a.d(l,{a:l}),l}})(),(()=>{a.d=(e,l)=>{for(var t in l)a.o(l,t)&&!a.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:l[t]})}})(),(()=>{a.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()})(),(()=>{a.o=(e,l)=>Object.prototype.hasOwnProperty.call(e,l)})(),(()=>{a.r=e=>{"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}})(),(()=>{var e={524:0};a.O.j=l=>0===e[l];var l=(l,t)=>{var n,u,[o,i,c]=t,s=0;if(o.some((l=>0!==e[l]))){for(n in i)a.o(i,n)&&(a.m[n]=i[n]);if(c)var d=c(a)}for(l&&l(t);sa(7481)));t=a.O(t)})(); +//# sourceMappingURL=app.98f78643.js.map \ No newline at end of file diff --git a/src/main/resources/static/uf/js/app.98f78643.js.map b/src/main/resources/static/uf/js/app.98f78643.js.map new file mode 100644 index 0000000..569faf6 --- /dev/null +++ b/src/main/resources/static/uf/js/app.98f78643.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/app.98f78643.js","mappings":"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","sources":["webpack://web/./src/App.vue","webpack://web/./src/App.vue?7ccd","webpack://web/./src/utils/ApiClient.js","webpack://web/./src/pages/device/ModuleManagement.vue","webpack://web/./src/pages/device/ModuleManagement.vue?e049","webpack://web/./src/pages/device/ActuatorManagement.vue","webpack://web/./src/pages/device/ActuatorManagement.vue?c721","webpack://web/./src/pages/device/ActuatorCommandManagement.vue","webpack://web/./src/pages/device/ActuatorCommandManagement.vue?2bc5","webpack://web/./src/pages/device/Page.vue","webpack://web/./src/pages/device/Page.vue?c6e1","webpack://web/./src/pages/snippet/Snippet.vue","webpack://web/./src/pages/snippet/Snippet.vue?abc1","webpack://web/./src/pages/snippet/Page.vue","webpack://web/./src/pages/snippet/Page.vue?2868","webpack://web/./src/pages/setting/Page.vue","webpack://web/./src/pages/setting/Page.vue?7204","webpack://web/./src/main.js","webpack://web/webpack/bootstrap","webpack://web/webpack/runtime/chunk loaded","webpack://web/webpack/runtime/compat get default export","webpack://web/webpack/runtime/define property getters","webpack://web/webpack/runtime/global","webpack://web/webpack/runtime/hasOwnProperty shorthand","webpack://web/webpack/runtime/make namespace object","webpack://web/webpack/runtime/jsonp chunk loading","webpack://web/webpack/startup"],"sourcesContent":["\n","import script from \"./App.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./App.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import axios from 'axios';\r\nimport { Modal } from 'ant-design-vue';\r\nexport default class ApiClient {\r\n // client instance\r\n static client = null;\r\n\r\n /**\r\n * get client instance\r\n * @returns {ApiClient}\r\n */\r\n static getClient() {\r\n if (ApiClient.client === null) {\r\n ApiClient.client = new ApiClient();\r\n }\r\n return ApiClient.client;\r\n }\r\n\r\n // constructor\r\n constructor() {\r\n \r\n }\r\n\r\n // call api\r\n async call( name, params={}, callback=null ) {\r\n let headers = {};\r\n let baseURL = `http://${window.location.hostname}/api`;\r\n const response = await axios.post(`${baseURL}/${name}`, params, {\r\n headers : headers,\r\n });\r\n\r\n if ( !response.data.success ) {\r\n if ( null !== callback ) {\r\n return Modal.error({title:'系统错误', content: response.data.message});\r\n } else {\r\n throw new Error(response.data.message);\r\n }\r\n }\r\n\r\n if ( null !== callback ) {\r\n callback(response.data.data);\r\n }\r\n return response.data.data;\r\n }\r\n\r\n async snippetExecute( key, params ) {\r\n return this.call('snippet/execute-by-key', {key:key, params:params});\r\n }\r\n}","\r\n","import script from \"./ModuleManagement.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./ModuleManagement.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n","import script from \"./ActuatorManagement.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./ActuatorManagement.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n","import script from \"./ActuatorCommandManagement.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./ActuatorCommandManagement.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n","import script from \"./Page.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./Page.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n\r\n","import script from \"./Snippet.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./Snippet.vue?vue&type=script&setup=true&lang=js\"\n\nimport \"./Snippet.vue?vue&type=style&index=0&id=30324df0&lang=css\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n","import script from \"./Page.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./Page.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n","import script from \"./Page.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./Page.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { createApp } from 'vue'\nimport { createPinia } from 'pinia'\nimport { createRouter, createWebHashHistory } from 'vue-router'\nimport Antd from 'ant-design-vue';\nimport * as AntdIcons from '@ant-design/icons-vue'\nimport App from './App.vue'\nimport './styles/tailwindcss.css';\nimport 'ant-design-vue/dist/reset.css';\nimport './styles/app.css';\n\nimport PageDevice from './pages/device/Page.vue';\nimport PageSnippet from './pages/snippet/Page.vue';\nimport PageSetting from './pages/setting/Page.vue';\nconst app = createApp(App);\napp.use(createPinia());\napp.use(createRouter({\n routes : [\n { name:'home', path:'/', component:PageDevice },\n { name:'device', path:'/device', component:PageDevice},\n { name:'snippet', path:'/snippet', component:PageSnippet},\n { name:'setting', path:'/setting', component:PageSetting}\n ],\n history : createWebHashHistory()\n}));\napp.use(Antd);\nfor ( let icon in AntdIcons ) {\n app.component(icon, AntdIcons[icon]);\n}\napp.mount('#app');\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunkweb\"] = globalThis[\"webpackChunkweb\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [504], () => (__webpack_require__(7481)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["mounted","document","title","onMounted","__exports__","ApiClient","getClient","client","constructor","call","name","params","callback","headers","baseURL","window","location","hostname","response","axios","post","data","success","Modal","error","content","message","Error","snippetExecute","key","this","_defineProperty","emits","__emit","open","ref","edit","list","activeItemId","actionRefresh","async","value","actionCreate","actionEditOk","actionDelete","item","id","actionEdit","structuredClone","actionActive","props","__props","module","items","moduleId","sort","a","b","localeCompare","properties","JSON","parse","aid","type","isNew","stringify","setupStepperMotor","actuator","cmds","cmdKey","cmdId","parameters","cmd","actuatorId","connectionKey","cmdFlags","mid","fixedParameters","waitForFinish","watch","columns","dataIndex","align","width","dataSource","editOpen","connections","console","log","actionPaste","command","navigator","clipboard","readText","e","result","actionExec","record","actionCopy","writeText","activeModule","activeActuator","actionModuleActive","actionActuatorActive","snippet","commandColumns","commandOptions","refreshCommandOptionData","modules","moduleItem","label","selectable","children","push","actuators","actuatorItem","commands","option","buildInCmds","actionSnippetCommandChange","extra","undefined","triggerNode","actionSnippetCommandAdd","Date","now","desc","actionSnippetCommandDelete","index","indexOf","splice","actionSnippetSave","actionSnippetDelete","actionSnippetExecute","actionSnippetCommandExecute","cmdParams","actionSnippetCommandMove","offset","targetIndex","length","tmp","actionSnippetCopy","actionSnippetCommandInsertBefore","actionSnippetCommandInsertAfter","immediate","activeSnippet","snippets","snippetTreeData","actionActiveSnippet","keys","event","node","isLeaf","find","tree","path","split","pop","parent","i","pname","child","slice","join","options","actionUpdate","app","createApp","App","use","createPinia","createRouter","routes","component","PageDevice","PageSnippet","PageSetting","history","createWebHashHistory","Antd","icon","AntdIcons","mount","__webpack_module_cache__","__webpack_require__","cachedModule","exports","__webpack_modules__","m","deferred","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","Object","every","r","n","getter","__esModule","d","definition","o","defineProperty","enumerable","get","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file