monitor-new.component.html 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349
  1. <nz-divider></nz-divider>
  2. <nz-breadcrumb>
  3. <nz-breadcrumb-item>
  4. <a [routerLink]="['/']">
  5. <i nz-icon nzType="home"></i>
  6. <span>仪表盘</span>
  7. </a>
  8. </nz-breadcrumb-item>
  9. <nz-breadcrumb-item>
  10. <a [routerLink]="['/monitors']" [queryParams]="{ app: monitor.app ? monitor.app : '' }">
  11. <i nz-icon nzType="monitor"></i>
  12. <span>监控列表</span>
  13. </a>
  14. </nz-breadcrumb-item>
  15. <nz-breadcrumb-item>
  16. <i nz-icon nzType="plus-circle"></i>
  17. <span>新增 {{ 'monitor.app.' + monitor.app | i18n }} 监控</span>
  18. <a [href]="'https://tancloud.cn/docs/help/' + monitor.app" target="_blank" style="float: right; margin-right: 5%">
  19. <span>帮助&nbsp;</span>
  20. <i nz-icon nzType="question-circle" nzTheme="outline"></i>
  21. </a>
  22. </nz-breadcrumb-item>
  23. </nz-breadcrumb>
  24. <nz-divider></nz-divider>
  25. <nz-spin [nzSpinning]="isSpinning">
  26. <div class="-inner-content">
  27. <form nz-form #newForm="ngForm">
  28. <nz-form-item>
  29. <nz-form-label [nzSpan]="7" nzFor="host" nzRequired="true" nzTooltipTitle="被监控的对端IP或域名"> 监控Host </nz-form-label>
  30. <nz-form-control [nzSpan]="8" [nzErrorTip]="'validation.required' | i18n">
  31. <input
  32. [(ngModel)]="monitor.host"
  33. nz-input
  34. name="host"
  35. type="text"
  36. id="host"
  37. required
  38. placeholder="请输入域名或IP"
  39. (ngModelChange)="onHostChange($event)"
  40. />
  41. </nz-form-control>
  42. </nz-form-item>
  43. <nz-form-item>
  44. <nz-form-label [nzSpan]="7" nzFor="name" nzRequired="true" nzTooltipTitle="标识此监控的名称,名称需要保证唯一性">
  45. 监控名称
  46. </nz-form-label>
  47. <nz-form-control [nzSpan]="8" [nzErrorTip]="'validation.required' | i18n">
  48. <input [(ngModel)]="monitor.name" nz-input required name="name" type="text" id="name" placeholder="监控名称需要保证唯一性" />
  49. </nz-form-control>
  50. </nz-form-item>
  51. <nz-divider></nz-divider>
  52. <nz-form-item *ngFor="let paramDefine of paramDefines; let i = index">
  53. <nz-form-label
  54. *ngIf="paramDefine.field !== 'host' && paramDefine.type === 'text'"
  55. nzSpan="7"
  56. [nzRequired]="paramDefine.required"
  57. [nzFor]="paramDefine.field"
  58. >{{ paramDefine.name }}
  59. </nz-form-label>
  60. <nz-form-control
  61. *ngIf="paramDefine.field !== 'host' && paramDefine.type === 'text'"
  62. nzSpan="8"
  63. [nzErrorTip]="'validation.required' | i18n"
  64. >
  65. <input
  66. nz-input
  67. [required]="paramDefine.required"
  68. [(ngModel)]="params[i].value"
  69. [name]="paramDefine.field"
  70. [type]="paramDefine.type"
  71. [id]="paramDefine.field"
  72. [placeholder]="paramDefine.placeholder ? paramDefine.placeholder : ''"
  73. />
  74. </nz-form-control>
  75. <nz-form-label *ngIf="paramDefine.type === 'textarea'" nzSpan="7" [nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
  76. >{{ paramDefine.name }}
  77. </nz-form-label>
  78. <nz-form-control *ngIf="paramDefine.type === 'textarea'" nzSpan="8" [nzErrorTip]="'validation.required' | i18n">
  79. <textarea
  80. nz-input
  81. [(ngModel)]="params[i].value"
  82. [required]="paramDefine.required"
  83. [name]="paramDefine.field"
  84. [id]="paramDefine.field"
  85. [placeholder]="paramDefine.placeholder ? paramDefine.placeholder : ''"
  86. rows="3"
  87. ></textarea>
  88. </nz-form-control>
  89. <nz-form-label *ngIf="paramDefine.type === 'password'" nzSpan="7" [nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
  90. >{{ paramDefine.name }}
  91. </nz-form-label>
  92. <nz-form-control *ngIf="paramDefine.type === 'password'" nzSpan="8" [nzErrorTip]="'validation.required' | i18n">
  93. <nz-input-group [nzSuffix]="suffixTemplate" style="width: 100%">
  94. <input
  95. [type]="passwordVisible ? 'text' : 'password'"
  96. nz-input
  97. [required]="paramDefine.required"
  98. placeholder="input password"
  99. [(ngModel)]="params[i].value"
  100. [id]="paramDefine.field"
  101. [name]="paramDefine.field"
  102. [placeholder]="paramDefine.placeholder ? paramDefine.placeholder : ''"
  103. />
  104. </nz-input-group>
  105. <ng-template #suffixTemplate>
  106. <i nz-icon [nzType]="passwordVisible ? 'eye-invisible' : 'eye'" (click)="passwordVisible = !passwordVisible"></i>
  107. </ng-template>
  108. </nz-form-control>
  109. <nz-form-label *ngIf="paramDefine.type === 'number'" nzSpan="7" [nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
  110. >{{ paramDefine.name }}
  111. </nz-form-label>
  112. <nz-form-control *ngIf="paramDefine.type === 'number'" nzSpan="8" [nzErrorTip]="'validation.required' | i18n">
  113. <nz-input-number
  114. [(ngModel)]="params[i].value"
  115. [required]="paramDefine.required"
  116. [nzMin]="-1000"
  117. [nzMax]="65535"
  118. [nzStep]="1"
  119. [nzPlaceHolder]="paramDefine.placeholder ? paramDefine.placeholder : ''"
  120. [name]="paramDefine.field"
  121. [id]="paramDefine.field"
  122. ></nz-input-number>
  123. </nz-form-control>
  124. <nz-form-label *ngIf="paramDefine.type === 'boolean'" nzSpan="7" [nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
  125. >{{ paramDefine.name }}
  126. </nz-form-label>
  127. <nz-form-control *ngIf="paramDefine.type === 'boolean'" nzSpan="8" [nzErrorTip]="'validation.required' | i18n">
  128. <nz-switch
  129. [(ngModel)]="params[i].value"
  130. (ngModelChange)="onParamBooleanChanged($event, paramDefine.field)"
  131. [required]="paramDefine.required"
  132. [name]="paramDefine.field"
  133. [id]="paramDefine.field"
  134. ></nz-switch>
  135. </nz-form-control>
  136. <nz-form-label *ngIf="paramDefine.type === 'radio'" nzSpan="7" [nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
  137. >{{ paramDefine.name }}
  138. </nz-form-label>
  139. <nz-form-control *ngIf="paramDefine.type === 'radio'" nzSpan="8" [nzErrorTip]="'validation.required' | i18n">
  140. <nz-radio-group
  141. [(ngModel)]="params[i].value"
  142. nzButtonStyle="solid"
  143. [required]="paramDefine.required"
  144. [name]="paramDefine.field"
  145. [id]="paramDefine.field"
  146. >
  147. <label nz-radio-button [nzValue]="optionItem.value" *ngFor="let optionItem of paramDefine.options">
  148. {{ optionItem.label }}
  149. </label>
  150. </nz-radio-group>
  151. </nz-form-control>
  152. <nz-form-label *ngIf="paramDefine.type === 'key-value'" nzSpan="7" [nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
  153. >{{ paramDefine.name }}
  154. </nz-form-label>
  155. <nz-form-control *ngIf="paramDefine.type === 'key-value'" nzSpan="8" [nzErrorTip]="'validation.required' | i18n">
  156. <app-key-value-input
  157. [(value)]="params[i].value"
  158. [id]="paramDefine.field"
  159. [keyAlias]="paramDefine.keyAlias ? paramDefine.keyAlias : 'Name'"
  160. [valueAlias]="paramDefine.valueAlias ? paramDefine.valueAlias : 'Value'"
  161. ></app-key-value-input>
  162. </nz-form-control>
  163. </nz-form-item>
  164. <nz-collapse [nzGhost]="true">
  165. <nz-collapse-panel nzHeader="高级" [nzHeader]="extraColHeader" [nzShowArrow]="false">
  166. <nz-form-item *ngFor="let paramDefine of advancedParamDefines; let i = index">
  167. <nz-form-label
  168. *ngIf="paramDefine.field !== 'host' && paramDefine.type === 'text'"
  169. nzSpan="7"
  170. [nzRequired]="paramDefine.required"
  171. [nzFor]="paramDefine.field"
  172. >{{ paramDefine.name }}
  173. </nz-form-label>
  174. <nz-form-control
  175. *ngIf="paramDefine.field !== 'host' && paramDefine.type === 'text'"
  176. nzSpan="8"
  177. [nzErrorTip]="'validation.required' | i18n"
  178. >
  179. <input
  180. nz-input
  181. [(ngModel)]="advancedParams[i].value"
  182. [required]="paramDefine.required"
  183. [name]="paramDefine.field"
  184. [type]="paramDefine.type"
  185. [id]="paramDefine.field"
  186. [placeholder]="paramDefine.placeholder ? paramDefine.placeholder : ''"
  187. />
  188. </nz-form-control>
  189. <nz-form-label
  190. *ngIf="paramDefine.type === 'textarea'"
  191. nzSpan="7"
  192. [nzRequired]="paramDefine.required"
  193. [nzFor]="paramDefine.field"
  194. >{{ paramDefine.name }}
  195. </nz-form-label>
  196. <nz-form-control *ngIf="paramDefine.type === 'textarea'" nzSpan="8" [nzErrorTip]="'validation.required' | i18n">
  197. <textarea
  198. nz-input
  199. [(ngModel)]="advancedParams[i].value"
  200. [required]="paramDefine.required"
  201. [name]="paramDefine.field"
  202. [id]="paramDefine.field"
  203. [placeholder]="paramDefine.placeholder ? paramDefine.placeholder : ''"
  204. rows="3"
  205. ></textarea>
  206. </nz-form-control>
  207. <nz-form-label
  208. *ngIf="paramDefine.type === 'password'"
  209. nzSpan="7"
  210. [nzRequired]="paramDefine.required"
  211. [nzFor]="paramDefine.field"
  212. >{{ paramDefine.name }}
  213. </nz-form-label>
  214. <nz-form-control *ngIf="paramDefine.type === 'password'" nzSpan="8" [nzErrorTip]="'validation.required' | i18n">
  215. <nz-input-group [nzSuffix]="suffixTemplate" style="width: 100%">
  216. <input
  217. [type]="passwordVisible ? 'text' : 'password'"
  218. nz-input
  219. placeholder="input password"
  220. [required]="paramDefine.required"
  221. [(ngModel)]="advancedParams[i].value"
  222. [id]="paramDefine.field"
  223. [name]="paramDefine.field"
  224. [placeholder]="paramDefine.placeholder ? paramDefine.placeholder : ''"
  225. />
  226. </nz-input-group>
  227. <ng-template #suffixTemplate>
  228. <i nz-icon [nzType]="passwordVisible ? 'eye-invisible' : 'eye'" (click)="passwordVisible = !passwordVisible"></i>
  229. </ng-template>
  230. </nz-form-control>
  231. <nz-form-label *ngIf="paramDefine.type === 'number'" nzSpan="7" [nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
  232. >{{ paramDefine.name }}
  233. </nz-form-label>
  234. <nz-form-control *ngIf="paramDefine.type === 'number'" nzSpan="8" [nzErrorTip]="'validation.required' | i18n">
  235. <nz-input-number
  236. [(ngModel)]="advancedParams[i].value"
  237. [required]="paramDefine.required"
  238. [nzMin]="-1000"
  239. [nzMax]="65535"
  240. [nzStep]="1"
  241. [nzPlaceHolder]="paramDefine.placeholder ? paramDefine.placeholder : ''"
  242. [name]="paramDefine.field"
  243. [id]="paramDefine.field"
  244. ></nz-input-number>
  245. </nz-form-control>
  246. <nz-form-label *ngIf="paramDefine.type === 'boolean'" nzSpan="7" [nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
  247. >{{ paramDefine.name }}
  248. </nz-form-label>
  249. <nz-form-control *ngIf="paramDefine.type === 'boolean'" nzSpan="8" [nzErrorTip]="'validation.required' | i18n">
  250. <nz-switch
  251. [(ngModel)]="advancedParams[i].value"
  252. [required]="paramDefine.required"
  253. [name]="paramDefine.field"
  254. [id]="paramDefine.field"
  255. ></nz-switch>
  256. </nz-form-control>
  257. <nz-form-label *ngIf="paramDefine.type === 'radio'" nzSpan="7" [nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
  258. >{{ paramDefine.name }}
  259. </nz-form-label>
  260. <nz-form-control *ngIf="paramDefine.type === 'radio'" nzSpan="8" [nzErrorTip]="'validation.required' | i18n">
  261. <nz-radio-group
  262. [(ngModel)]="advancedParams[i].value"
  263. [required]="paramDefine.required"
  264. nzButtonStyle="solid"
  265. [name]="paramDefine.field"
  266. [id]="paramDefine.field"
  267. >
  268. <label nz-radio-button [nzValue]="optionItem.value" *ngFor="let optionItem of paramDefine.options">
  269. {{ optionItem.label }}
  270. </label>
  271. </nz-radio-group>
  272. </nz-form-control>
  273. <nz-form-label
  274. *ngIf="paramDefine.type === 'key-value'"
  275. nzSpan="7"
  276. [nzRequired]="paramDefine.required"
  277. [nzFor]="paramDefine.field"
  278. >{{ paramDefine.name }}
  279. </nz-form-label>
  280. <nz-form-control *ngIf="paramDefine.type === 'key-value'" nzSpan="8" [nzErrorTip]="'validation.required' | i18n">
  281. <app-key-value-input
  282. [(value)]="advancedParams[i].value"
  283. [id]="paramDefine.field"
  284. keyAlias="Header Name"
  285. valueAlias="Header Value"
  286. ></app-key-value-input>
  287. </nz-form-control>
  288. </nz-form-item>
  289. </nz-collapse-panel>
  290. </nz-collapse>
  291. <ng-template #extraColHeader>
  292. <button style="top: -10px; margin-left: 40%" nz-button nzType="dashed" nz-tooltip nzTooltipTitle="设置高级可选参数">
  293. <span>高级设置</span>
  294. <i nz-icon nzType="down-circle" nzTheme="outline"></i>
  295. </button>
  296. </ng-template>
  297. <nz-divider></nz-divider>
  298. <nz-form-item>
  299. <nz-form-label nzSpan="7" nzFor="intervals" nzTooltipTitle="监控周期性采集数据间隔时间,单位秒"> 采集间隔 </nz-form-label>
  300. <nz-form-control nzSpan="8">
  301. <nz-input-number [(ngModel)]="monitor.intervals" [nzMin]="10" [nzMax]="604800" [nzStep]="60" name="intervals" id="intervals">
  302. </nz-input-number>
  303. </nz-form-control>
  304. </nz-form-item>
  305. <nz-form-item>
  306. <nz-form-label nzSpan="7" nzFor="detect" nzTooltipTitle="新增监控前是否先探测检查监控可用性"> 测试连接 </nz-form-label>
  307. <nz-form-control nzSpan="8">
  308. <nz-switch [(ngModel)]="detected" name="detect" id="detect"></nz-switch>
  309. </nz-form-control>
  310. </nz-form-item>
  311. <nz-form-item>
  312. <nz-form-label [nzSpan]="7" nzFor="description" nzTooltipTitle="更多标识和描述此监控的备注信息"> 描述备注 </nz-form-label>
  313. <nz-form-control [nzSpan]="8">
  314. <nz-textarea-count [nzMaxCharacterCount]="100">
  315. <textarea [(ngModel)]="monitor.description" rows="3" nz-input name="description" id="description"></textarea>
  316. </nz-textarea-count>
  317. </nz-form-control>
  318. </nz-form-item>
  319. <div nz-row>
  320. <div nz-col nzSpan="8" nzOffset="9">
  321. <button nz-button nzType="primary" type="submit" (click)="onDetect(newForm.form)"> 测试 </button>
  322. <button nz-button nzType="primary" type="submit" (click)="onSubmit(newForm.form)"> 确定 </button>
  323. <button nz-button nzType="primary" type="reset" (click)="onCancel()"> 取消 </button>
  324. </div>
  325. </div>
  326. </form>
  327. </div>
  328. </nz-spin>