Commit 319a27f09e732d80b62fac509b8f919c3cca7a97
1 parent
b351e0d3
feat: implement display panel static style
Showing
3 changed files
with
391 additions
and
234 deletions
@@ -184,6 +184,26 @@ | @@ -184,6 +184,26 @@ | ||
184 | CHARTS: 'charts' | 184 | CHARTS: 'charts' |
185 | } | 185 | } |
186 | 186 | ||
187 | + Sidebar.prototype.componentDisplayPanelPermissionMap = new Map() | ||
188 | + | ||
189 | + Sidebar.prototype.setComponentPermision = function (conmponentType, permission) { | ||
190 | + this.componentDisplayPanelPermissionMap.set(componentType, permission) | ||
191 | + } | ||
192 | + | ||
193 | + Sidebar.prototype.getComponentPermission = function (componentType) { | ||
194 | + return this.componentDisplayPanelPermissionMap.get(componentType) || [] | ||
195 | + } | ||
196 | + | ||
197 | + /** | ||
198 | + * @description 数据面板权限 | ||
199 | + */ | ||
200 | + Sidebar.prototype.enumPermissionPanel = { | ||
201 | + DATA_SOURCE: 'dataSource', | ||
202 | + DISPLAY_TYPE: 'displayType', | ||
203 | + INTERACTION: 'interaction', | ||
204 | + DYNAMIC_EFFECT: 'dynamicEffect', | ||
205 | + VAR_IMAGE: 'variableImage' | ||
206 | + } | ||
187 | 207 | ||
188 | /** | 208 | /** |
189 | * 各图形库里面要加载的图形 | 209 | * 各图形库里面要加载的图形 |
@@ -5093,6 +5093,7 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -5093,6 +5093,7 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
5093 | */ | 5093 | */ |
5094 | async function initNode() { | 5094 | async function initNode() { |
5095 | createDataSourcePanel() | 5095 | createDataSourcePanel() |
5096 | + createChartBindPanel() | ||
5096 | createInteractionPanel() | 5097 | createInteractionPanel() |
5097 | createDynamicEffectPanel() | 5098 | createDynamicEffectPanel() |
5098 | createSubmitPanel() | 5099 | createSubmitPanel() |
@@ -5136,224 +5137,6 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -5136,224 +5137,6 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
5136 | return eventList | 5137 | return eventList |
5137 | } | 5138 | } |
5138 | 5139 | ||
5139 | - | ||
5140 | - /** | ||
5141 | - * @description 创建数据源模块 | ||
5142 | - */ | ||
5143 | - // function createDataSourcePanel() { | ||
5144 | - // const enumActionEl = { | ||
5145 | - // ORG_EL: 'dataSourceOrg', | ||
5146 | - // DEVICE_EL: 'dataSourceDevice', | ||
5147 | - // SLAVE_DEVICE_EL: 'dataSourceSlaveDevice', | ||
5148 | - // ATTR_EL: 'dataSourceAttr', | ||
5149 | - // } | ||
5150 | - // | ||
5151 | - // const fragment = document.createDocumentFragment() | ||
5152 | - // const defaultPanel = createPanel() | ||
5153 | - // const title = createTitle('数据源') | ||
5154 | - // let orgPanel, devicePanel, slaveDevicePanel, attrsPanel; | ||
5155 | - // $(title).addClass('override__title--default') | ||
5156 | - // $(defaultPanel).addClass('override__panel--default') | ||
5157 | - // | ||
5158 | - // /** | ||
5159 | - // * @description 设备列表 | ||
5160 | - // */ | ||
5161 | - // let deviceList = [] | ||
5162 | - // | ||
5163 | - // | ||
5164 | - // /** | ||
5165 | - // * @description 生成组织选择 | ||
5166 | - // */ | ||
5167 | - // async function generatorOrgTres() { | ||
5168 | - // orgPanel = defaultPanel.cloneNode(false) | ||
5169 | - // const orgContainer = `<div id="${ enumActionEl.ORG_EL }"></div>` | ||
5170 | - // $(orgPanel).append(orgContainer) | ||
5171 | - // | ||
5172 | - // const [ err, res ] = await to(ConfigurationNodeApi.getOrgTree()) | ||
5173 | - // if (err) return | ||
5174 | - // treeList = res | ||
5175 | - // | ||
5176 | - // UseLayUi.createTreeSelect({ | ||
5177 | - // elem: `#${ enumActionEl.ORG_EL }`, | ||
5178 | - // layFilter: enumDataSourceConst.ORG_ID, | ||
5179 | - // className: 'data-source__org--override', | ||
5180 | - // label: '组织', | ||
5181 | - // singleUsage: false, | ||
5182 | - // treeProps: { | ||
5183 | - // data: treeList, | ||
5184 | - // onlyIconControl: true, | ||
5185 | - // click(node) { | ||
5186 | - // currentCheckedOrgNode = node.data.id | ||
5187 | - // getDevicesByOrgId(node.data.id) | ||
5188 | - // }, | ||
5189 | - // }, | ||
5190 | - // }) | ||
5191 | - // } | ||
5192 | - // | ||
5193 | - // | ||
5194 | - // /** | ||
5195 | - // * @description 生成设备选择器 | ||
5196 | - // */ | ||
5197 | - // function generatorDeviceSelect() { | ||
5198 | - // devicePanel = defaultPanel.cloneNode(false) | ||
5199 | - // const deviceSelect = UseLayUi.createSelect({ | ||
5200 | - // label: '设备', | ||
5201 | - // layFilter: enumDataSourceConst.DEVICE_ID, | ||
5202 | - // className: 'data-panel__select', | ||
5203 | - // }) | ||
5204 | - // $(devicePanel).attr('id', enumActionEl.DEVICE_EL).append(deviceSelect) | ||
5205 | - // } | ||
5206 | - // | ||
5207 | - // /** | ||
5208 | - // * @description 生成从设备选择器 | ||
5209 | - // */ | ||
5210 | - // function generatorSlaveDevice() { | ||
5211 | - // slaveDevicePanel = defaultPanel.cloneNode(false) | ||
5212 | - // const slaveDeviceSelect = UseLayUi.createSelect({ | ||
5213 | - // label: '子设备', | ||
5214 | - // layFilter: enumDataSourceConst.SLAVE_DEVICE_ID, | ||
5215 | - // className: 'data-panel__select', | ||
5216 | - // onClick(data) { | ||
5217 | - // const { value } = data | ||
5218 | - // getAttrByDeviceId(value) | ||
5219 | - // }, | ||
5220 | - // }) | ||
5221 | - // $(slaveDevicePanel).css({ display: 'none' }).attr('id', enumActionEl.SLAVE_DEVICE_EL).append(slaveDeviceSelect) | ||
5222 | - // } | ||
5223 | - // | ||
5224 | - // /** | ||
5225 | - // * @description 生成属性选择器 | ||
5226 | - // */ | ||
5227 | - // function generatorAttrSelect() { | ||
5228 | - // attrsPanel = defaultPanel.cloneNode(false) | ||
5229 | - // const attrsSelect = UseLayUi.createSelect({ | ||
5230 | - // label: '属性', | ||
5231 | - // layFilter: enumDataSourceConst.ATTR, | ||
5232 | - // className: 'data-panel__select', | ||
5233 | - // }) | ||
5234 | - // $(attrsPanel).attr('id', enumActionEl.ATTR_EL).append(attrsSelect) | ||
5235 | - // | ||
5236 | - // } | ||
5237 | - // | ||
5238 | - // | ||
5239 | - // /** | ||
5240 | - // * @description 根据组织ID获取设备 | ||
5241 | - // */ | ||
5242 | - // async function getDevicesByOrgId(organizationId) { | ||
5243 | - // if (organizationId) { | ||
5244 | - // const items = deviceList = await ConfigurationNodeApi.getMasterDevice(organizationId); | ||
5245 | - // $(`#${ enumActionEl.DEVICE_EL }`).find('select').html(UseLayUi.generateOptionTemplate({ dataSource: items })) | ||
5246 | - // form.render('select', CONTAINER_FILTER) | ||
5247 | - // } | ||
5248 | - // } | ||
5249 | - // | ||
5250 | - // /** | ||
5251 | - // * @description 通过主设备ID获取从设备 | ||
5252 | - // */ | ||
5253 | - // async function getSlaveDeviceByMasterDeviceId(orgId, deviceId) { | ||
5254 | - // if (deviceId && currentCheckedOrgNode) { | ||
5255 | - // const items = await ConfigurationNodeApi.getSlaveDevice(orgId, deviceId); | ||
5256 | - // $(`#${ enumActionEl.SLAVE_DEVICE_EL }`).find('select').html(UseLayUi.generateOptionTemplate({ dataSource: items })) | ||
5257 | - // form.render('select', CONTAINER_FILTER) | ||
5258 | - // } | ||
5259 | - // } | ||
5260 | - // | ||
5261 | - // /** | ||
5262 | - // * @description 根据设备ID获取属性 | ||
5263 | - // */ | ||
5264 | - // async function getAttrByDeviceId(tbDeviceId) { | ||
5265 | - // if (tbDeviceId) { | ||
5266 | - // const [ err, res ] = await to(ConfigurationNodeApi.getDeviceAttr(tbDeviceId)) | ||
5267 | - // $(`#${ enumActionEl.ATTR_EL }`).find('select').html(UseLayUi.generateOptionTemplate({ dataSource: res })) | ||
5268 | - // form.render('select', CONTAINER_FILTER) | ||
5269 | - // } | ||
5270 | - // } | ||
5271 | - // | ||
5272 | - // | ||
5273 | - // /** | ||
5274 | - // * @description 数据回显 | ||
5275 | - // */ | ||
5276 | - // async function echoData() { | ||
5277 | - // | ||
5278 | - // echoRefreshFn = () => { | ||
5279 | - // echoDataSource() | ||
5280 | - // echoActionType() | ||
5281 | - // form.render(null, CONTAINER_FILTER) | ||
5282 | - // } | ||
5283 | - // | ||
5284 | - // await getNodeBindInfo() | ||
5285 | - // | ||
5286 | - // | ||
5287 | - // function echoDataSource() { | ||
5288 | - // const { dataSources = [] } = currentNodeData || {} | ||
5289 | - // const [ dataSource = {} ] = dataSources | ||
5290 | - // const { orgId, deviceId, slaveDeviceId, attr } = dataSource | ||
5291 | - // const queue = [] | ||
5292 | - // if (orgId) { | ||
5293 | - // currentCheckedOrgNode = orgId | ||
5294 | - // queue.push(getDevicesByOrgId(orgId)) | ||
5295 | - // } | ||
5296 | - // if (slaveDeviceId) { | ||
5297 | - // queue.push(getSlaveDeviceByMasterDeviceId(orgId, deviceId)) | ||
5298 | - // $(`#${ enumActionEl.SLAVE_DEVICE_EL }`).css({ display: 'block' }) | ||
5299 | - // queue.push(getAttrByDeviceId(slaveDeviceId)) | ||
5300 | - // } else { | ||
5301 | - // queue.push(getAttrByDeviceId(deviceId)) | ||
5302 | - // } | ||
5303 | - // Promise.all(queue) | ||
5304 | - // .finally(() => { | ||
5305 | - // const orgNode = UseLayUi.findTreeObjectByField(treeList, currentCheckedOrgNode) | ||
5306 | - // $(`#${ enumActionEl.ORG_EL } input[name="${ enumDataSourceConst.ORG_ID }"]`).parent().find('span').html(orgNode?.name) | ||
5307 | - // form.val(CONTAINER_FILTER, { | ||
5308 | - // orgId, | ||
5309 | - // deviceId, | ||
5310 | - // slaveDeviceId, | ||
5311 | - // attr, | ||
5312 | - // }) | ||
5313 | - // }) | ||
5314 | - // } | ||
5315 | - // | ||
5316 | - // async function echoActionType() { | ||
5317 | - // const act = currentNodeData.act ?? [] | ||
5318 | - // const event = currentNodeData.event ?? [] | ||
5319 | - // const actionType = {} | ||
5320 | - // for (const item of act) { | ||
5321 | - // if (!item.condition || !item.condition?.length) { | ||
5322 | - // $(`.interaction__container input[name="${ item.type }"]`).attr('disabled', true) | ||
5323 | - // } else { | ||
5324 | - // $(`.interaction__container input[name="${ item.type }"]`).attr('disabled', false) | ||
5325 | - // } | ||
5326 | - // actionType[item.type] = item.enabled | ||
5327 | - // } | ||
5328 | - // for (const item of event) { | ||
5329 | - // if (!item.content) { | ||
5330 | - // $(`.interaction__container input[name="${ item.type }"]`).attr('disabled', true) | ||
5331 | - // } else { | ||
5332 | - // $(`.interaction__container input[name="${ item.type }"]`).attr('disabled', false) | ||
5333 | - // } | ||
5334 | - // actionType[item.type] = item.enabled | ||
5335 | - // } | ||
5336 | - // form.val(CONTAINER_FILTER, actionType) | ||
5337 | - // } | ||
5338 | - // } | ||
5339 | - // | ||
5340 | - // function mount() { | ||
5341 | - // generatorOrgTres() | ||
5342 | - // generatorDeviceSelect() | ||
5343 | - // generatorSlaveDevice() | ||
5344 | - // generatorAttrSelect() | ||
5345 | - // echoData() | ||
5346 | - // | ||
5347 | - // $(fragment).append(title).append(orgPanel).append(devicePanel).append(slaveDevicePanel).append(attrsPanel) | ||
5348 | - // | ||
5349 | - // $(container).append(fragment) | ||
5350 | - // | ||
5351 | - // } | ||
5352 | - // | ||
5353 | - // mount() | ||
5354 | - // | ||
5355 | - // } | ||
5356 | - | ||
5357 | /** | 5140 | /** |
5358 | * @description 创建数据面板 | 5141 | * @description 创建数据面板 |
5359 | */ | 5142 | */ |
@@ -5412,21 +5195,354 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -5412,21 +5195,354 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
5412 | mount() | 5195 | mount() |
5413 | } | 5196 | } |
5414 | 5197 | ||
5415 | - // /** | ||
5416 | - // * @description 创建功能模块 | ||
5417 | - // */ | ||
5418 | - // function createFunctionPanel() { | ||
5419 | - // const fragment = document.createDocumentFragment() | ||
5420 | - // const title = createTitle('功能') | ||
5421 | - // $(title).addClass('override__title--default') | ||
5422 | - // fragment.append(title) | ||
5423 | - // generateActionEventNode(functionList).forEach(item => { | ||
5424 | - // const panel = createPanel() | ||
5425 | - // $(panel).addClass('override__panel--default').append(item) | ||
5426 | - // $(fragment).append(panel) | ||
5427 | - // }) | ||
5428 | - // $(container).append(fragment) | ||
5429 | - // } | 5198 | + function createChartBindPanel() { |
5199 | + const fragment = document.createDocumentFragment() | ||
5200 | + const chartBindContainer = document.createElement('div') | ||
5201 | + chartBindContainer.setAttribute('class', 'chart-panel__style') | ||
5202 | + chartBindContainer.style.padding = '10px' | ||
5203 | + const title = createTitle('展示类型') | ||
5204 | + $(title).addClass('override__title--default') | ||
5205 | + | ||
5206 | + const enumActionEL = { | ||
5207 | + SCOPE_FILTER: 'bindChartScopeFilter', | ||
5208 | + | ||
5209 | + INTERVAL_EL: 'bindChartIntervalSelect' | ||
5210 | + } | ||
5211 | + | ||
5212 | + const enumConst = { | ||
5213 | + DATA_TYPE: 'dataType', | ||
5214 | + | ||
5215 | + REAL: 'REAL', | ||
5216 | + | ||
5217 | + HISTORY: 'HISTORY', | ||
5218 | + | ||
5219 | + /** | ||
5220 | + * @description 范围 | ||
5221 | + */ | ||
5222 | + SCOPE: 'scope', | ||
5223 | + | ||
5224 | + /** | ||
5225 | + * @description 聚合 | ||
5226 | + */ | ||
5227 | + AGGREGATION: 'aggregation', | ||
5228 | + | ||
5229 | + /** | ||
5230 | + * @description 间隔 | ||
5231 | + */ | ||
5232 | + INTERVAL: 'interval' | ||
5233 | + } | ||
5234 | + | ||
5235 | + const enumTimeUnit = { | ||
5236 | + SECOND: 'second', | ||
5237 | + MINUTE: 'MINUTE', | ||
5238 | + HOUR: 'HOUR', | ||
5239 | + DAY: 'DAY', | ||
5240 | + } | ||
5241 | + | ||
5242 | + const defaultIntervalOptions = [ | ||
5243 | + { | ||
5244 | + id: 1, | ||
5245 | + unit: enumTimeUnit.SECOND, | ||
5246 | + linkage: [ | ||
5247 | + { id: 1, unit: enumTimeUnit.SECOND } | ||
5248 | + ] | ||
5249 | + }, | ||
5250 | + { | ||
5251 | + id: 5, | ||
5252 | + unit: enumTimeUnit.SECOND, | ||
5253 | + linkage: [ | ||
5254 | + { id: 1, unit: enumTimeUnit.SECOND } | ||
5255 | + ] | ||
5256 | + }, | ||
5257 | + { | ||
5258 | + id: 10, | ||
5259 | + unit: enumTimeUnit.SECOND, | ||
5260 | + linkage: [ | ||
5261 | + { id: 1, unit: enumTimeUnit.SECOND } | ||
5262 | + ] | ||
5263 | + }, | ||
5264 | + { | ||
5265 | + id: 15, | ||
5266 | + unit: enumTimeUnit.SECOND, | ||
5267 | + linkage: [ | ||
5268 | + { id: 1, unit: enumTimeUnit.SECOND } | ||
5269 | + ] | ||
5270 | + }, | ||
5271 | + { | ||
5272 | + id: 30, | ||
5273 | + unit: enumTimeUnit.SECOND, | ||
5274 | + linkage: [ | ||
5275 | + { id: 1, unit: enumTimeUnit.SECOND } | ||
5276 | + ] | ||
5277 | + }, | ||
5278 | + { | ||
5279 | + id: 1, | ||
5280 | + unit: enumTimeUnit.MINUTE, | ||
5281 | + linkage: [ | ||
5282 | + { id: 1, unit: enumTimeUnit.SECOND }, | ||
5283 | + { id: 5, unit: enumTimeUnit.SECOND }, | ||
5284 | + ] | ||
5285 | + }, | ||
5286 | + { | ||
5287 | + id: 2, | ||
5288 | + unit: enumTimeUnit.MINUTE, | ||
5289 | + linkage: [ | ||
5290 | + { id: 1, unit: enumTimeUnit.SECOND }, | ||
5291 | + { id: 5, unit: enumTimeUnit.SECOND }, | ||
5292 | + { id: 10, unit: enumTimeUnit.SECOND }, | ||
5293 | + { id: 15, unit: enumTimeUnit.SECOND }, | ||
5294 | + ] | ||
5295 | + }, | ||
5296 | + { | ||
5297 | + id: 5, | ||
5298 | + unit: enumTimeUnit.MINUTE, | ||
5299 | + linkage: [ | ||
5300 | + { id: 1, unit: enumTimeUnit.SECOND }, | ||
5301 | + { id: 5, unit: enumTimeUnit.SECOND }, | ||
5302 | + { id: 10, unit: enumTimeUnit.SECOND }, | ||
5303 | + { id: 15, unit: enumTimeUnit.SECOND }, | ||
5304 | + { id: 30, unit: enumTimeUnit.SECOND }, | ||
5305 | + ] | ||
5306 | + }, | ||
5307 | + { | ||
5308 | + id: 10, | ||
5309 | + unit: enumTimeUnit.MINUTE, | ||
5310 | + linkage: [ | ||
5311 | + { id: 5, unit: enumTimeUnit.SECOND }, | ||
5312 | + { id: 10, unit: enumTimeUnit.SECOND }, | ||
5313 | + { id: 15, unit: enumTimeUnit.SECOND }, | ||
5314 | + { id: 30, unit: enumTimeUnit.SECOND }, | ||
5315 | + { id: 1, unit: enumTimeUnit.MINUTE }, | ||
5316 | + ] | ||
5317 | + }, | ||
5318 | + { | ||
5319 | + id: 15, | ||
5320 | + unit: enumTimeUnit.MINUTE, | ||
5321 | + linkage: [ | ||
5322 | + { id: 5, unit: enumTimeUnit.SECOND }, | ||
5323 | + { id: 10, unit: enumTimeUnit.SECOND }, | ||
5324 | + { id: 15, unit: enumTimeUnit.SECOND }, | ||
5325 | + { id: 30, unit: enumTimeUnit.SECOND }, | ||
5326 | + { id: 1, unit: enumTimeUnit.MINUTE }, | ||
5327 | + { id: 2, unit: enumTimeUnit.MINUTE }, | ||
5328 | + ] | ||
5329 | + }, | ||
5330 | + { | ||
5331 | + id: 30, | ||
5332 | + unit: enumTimeUnit.MINUTE, | ||
5333 | + linkage: [ | ||
5334 | + { id: 5, unit: enumTimeUnit.SECOND }, | ||
5335 | + { id: 10, unit: enumTimeUnit.SECOND }, | ||
5336 | + { id: 15, unit: enumTimeUnit.SECOND }, | ||
5337 | + { id: 30, unit: enumTimeUnit.SECOND }, | ||
5338 | + { id: 1, unit: enumTimeUnit.MINUTE }, | ||
5339 | + { id: 2, unit: enumTimeUnit.MINUTE }, | ||
5340 | + ] | ||
5341 | + }, | ||
5342 | + { | ||
5343 | + id: 1, | ||
5344 | + unit: enumTimeUnit.HOUR, | ||
5345 | + linkage: [ | ||
5346 | + { id: 10, unit: enumTimeUnit.SECOND }, | ||
5347 | + { id: 15, unit: enumTimeUnit.SECOND }, | ||
5348 | + { id: 30, unit: enumTimeUnit.SECOND }, | ||
5349 | + { id: 1, unit: enumTimeUnit.MINUTE }, | ||
5350 | + { id: 2, unit: enumTimeUnit.MINUTE }, | ||
5351 | + { id: 5, unit: enumTimeUnit.MINUTE }, | ||
5352 | + ] | ||
5353 | + }, | ||
5354 | + { | ||
5355 | + id: 2, | ||
5356 | + unit: enumTimeUnit.HOUR, | ||
5357 | + linkage: [ | ||
5358 | + { id: 15, unit: enumTimeUnit.SECOND }, | ||
5359 | + { id: 30, unit: enumTimeUnit.SECOND }, | ||
5360 | + { id: 1, unit: enumTimeUnit.MINUTE }, | ||
5361 | + { id: 2, unit: enumTimeUnit.MINUTE }, | ||
5362 | + { id: 5, unit: enumTimeUnit.MINUTE }, | ||
5363 | + { id: 10, unit: enumTimeUnit.MINUTE }, | ||
5364 | + { id: 15, unit: enumTimeUnit.MINUTE }, | ||
5365 | + ] | ||
5366 | + }, | ||
5367 | + { | ||
5368 | + id: 5, | ||
5369 | + unit: enumTimeUnit.HOUR, | ||
5370 | + linkage: [ | ||
5371 | + { id: 1, unit: enumTimeUnit.MINUTE }, | ||
5372 | + { id: 2, unit: enumTimeUnit.MINUTE }, | ||
5373 | + { id: 5, unit: enumTimeUnit.MINUTE }, | ||
5374 | + { id: 10, unit: enumTimeUnit.MINUTE }, | ||
5375 | + { id: 15, unit: enumTimeUnit.MINUTE }, | ||
5376 | + { id: 30, unit: enumTimeUnit.MINUTE }, | ||
5377 | + ] | ||
5378 | + }, | ||
5379 | + { | ||
5380 | + id: 10, | ||
5381 | + unit: enumTimeUnit.HOUR, | ||
5382 | + linkage: [ | ||
5383 | + { id: 2, unit: enumTimeUnit.MINUTE }, | ||
5384 | + { id: 5, unit: enumTimeUnit.MINUTE }, | ||
5385 | + { id: 10, unit: enumTimeUnit.MINUTE }, | ||
5386 | + { id: 15, unit: enumTimeUnit.MINUTE }, | ||
5387 | + { id: 30, unit: enumTimeUnit.MINUTE }, | ||
5388 | + { id: 1, unit: enumTimeUnit.HOUR }, | ||
5389 | + ] | ||
5390 | + }, | ||
5391 | + { | ||
5392 | + id: 12, | ||
5393 | + unit: enumTimeUnit.HOUR, | ||
5394 | + linkage: [ | ||
5395 | + { id: 2, unit: enumTimeUnit.MINUTE }, | ||
5396 | + { id: 5, unit: enumTimeUnit.MINUTE }, | ||
5397 | + { id: 10, unit: enumTimeUnit.MINUTE }, | ||
5398 | + { id: 15, unit: enumTimeUnit.MINUTE }, | ||
5399 | + { id: 30, unit: enumTimeUnit.MINUTE }, | ||
5400 | + { id: 1, unit: enumTimeUnit.HOUR }, | ||
5401 | + ] | ||
5402 | + }, | ||
5403 | + { | ||
5404 | + id: 1, | ||
5405 | + unit: enumTimeUnit.DAY, | ||
5406 | + linkage: [ | ||
5407 | + { id: 5, unit: enumTimeUnit.MINUTE }, | ||
5408 | + { id: 10, unit: enumTimeUnit.MINUTE }, | ||
5409 | + { id: 15, unit: enumTimeUnit.MINUTE }, | ||
5410 | + { id: 30, unit: enumTimeUnit.MINUTE }, | ||
5411 | + { id: 1, unit: enumTimeUnit.HOUR }, | ||
5412 | + { id: 2, unit: enumTimeUnit.HOUR }, | ||
5413 | + ] | ||
5414 | + }, | ||
5415 | + { | ||
5416 | + id: 7, | ||
5417 | + unit: enumTimeUnit.DAY, | ||
5418 | + linkage: [ | ||
5419 | + { id: 30, unit: enumTimeUnit.MINUTE }, | ||
5420 | + { id: 1, unit: enumTimeUnit.HOUR }, | ||
5421 | + { id: 2, unit: enumTimeUnit.HOUR }, | ||
5422 | + { id: 5, unit: enumTimeUnit.HOUR }, | ||
5423 | + { id: 10, unit: enumTimeUnit.HOUR }, | ||
5424 | + { id: 12, unit: enumTimeUnit.HOUR }, | ||
5425 | + { id: 1, unit: enumTimeUnit.DAY }, | ||
5426 | + ] | ||
5427 | + }, | ||
5428 | + { | ||
5429 | + id: 30, | ||
5430 | + unit: enumTimeUnit.DAY, | ||
5431 | + linkage: [ | ||
5432 | + { id: 2, unit: enumTimeUnit.HOUR }, | ||
5433 | + { id: 5, unit: enumTimeUnit.HOUR }, | ||
5434 | + { id: 10, unit: enumTimeUnit.HOUR }, | ||
5435 | + { id: 12, unit: enumTimeUnit.HOUR }, | ||
5436 | + { id: 1, unit: enumTimeUnit.DAY }, | ||
5437 | + ] | ||
5438 | + }, | ||
5439 | + ] | ||
5440 | + | ||
5441 | + | ||
5442 | + | ||
5443 | + const aggergationOptions = [ | ||
5444 | + { id: '1', name: '最小值' }, | ||
5445 | + { id: '2', name: '最大值' }, | ||
5446 | + { id: '3', name: '平均值' }, | ||
5447 | + { id: '4', name: '求和' }, | ||
5448 | + { id: '5', name: '计数' }, | ||
5449 | + { id: '6', name: '空' }, | ||
5450 | + ] | ||
5451 | + | ||
5452 | + const unitMapping = { | ||
5453 | + [enumTimeUnit.SECOND]: '秒', | ||
5454 | + [enumTimeUnit.MINUTE]: '分', | ||
5455 | + [enumTimeUnit.HOUR]: '小时', | ||
5456 | + [enumTimeUnit.DAY]: '天', | ||
5457 | + } | ||
5458 | + | ||
5459 | + const unitConversion = { | ||
5460 | + [enumTimeUnit.SECOND]: 1, | ||
5461 | + [enumTimeUnit.MINUTE]: 1 * 60, | ||
5462 | + [enumTimeUnit.HOUR]: 1 * 60 * 60, | ||
5463 | + [enumTimeUnit.DAY]: 1 * 60 * 60 * 24, | ||
5464 | + } | ||
5465 | + | ||
5466 | + function createSwitchBindTypeRadio() { | ||
5467 | + return ` | ||
5468 | + <div class="layui-form-item"> | ||
5469 | + <label class="layui-form-label">数据类型</label> | ||
5470 | + <div class="layui-input-block"> | ||
5471 | + <input type="radio" name="${enumConst.DATA_TYPE}" value="${enumConst.REAL}" title="实时"> | ||
5472 | + <input type="radio" name="${enumConst.DATA_TYPE}" value="${enumConst.HISTORY}" title="历史" checked> | ||
5473 | + </div> | ||
5474 | + </div> | ||
5475 | + ` | ||
5476 | + } | ||
5477 | + | ||
5478 | + function createQueryScopeSelect() { | ||
5479 | + const options = defaultIntervalOptions.map((item, index) => ({ id: index, name: item.id + unitMapping[item.unit] })) | ||
5480 | + const template = UseLayUi.generateOptionTemplate({ | ||
5481 | + dataSource: options, | ||
5482 | + addPlaceholderOption: false | ||
5483 | + }) | ||
5484 | + return ` | ||
5485 | + <div class="layui-form-item"> | ||
5486 | + <label class="layui-form-label">时间周期</label> | ||
5487 | + <div class="layui-input-block"> | ||
5488 | + <select name="${enumConst.SCOPE}" lay-filter="${enumActionEL.SCOPE_FILTER}"> | ||
5489 | + ${template} | ||
5490 | + </select> | ||
5491 | + </div> | ||
5492 | + </div>` | ||
5493 | + } | ||
5494 | + | ||
5495 | + function createAggregationSelect() { | ||
5496 | + const template = UseLayUi.generateOptionTemplate({ | ||
5497 | + dataSource: aggergationOptions, | ||
5498 | + addPlaceholderOption: false | ||
5499 | + }) | ||
5500 | + return ` | ||
5501 | + <div class="layui-form-item"> | ||
5502 | + <label class="layui-form-label">聚合方式</label> | ||
5503 | + <div class="layui-input-block"> | ||
5504 | + <select name="${enumConst.AGGREGATION}"> | ||
5505 | + ${template} | ||
5506 | + </select> | ||
5507 | + </div> | ||
5508 | + </div>` | ||
5509 | + } | ||
5510 | + | ||
5511 | + function createIntervalSelect() { | ||
5512 | + return ` | ||
5513 | + <div class="layui-form-item"> | ||
5514 | + <label class="layui-form-label">间隔时间</label> | ||
5515 | + <div class="layui-input-block"> | ||
5516 | + <select id="${enumActionEL.INTERVAL_EL}" name="${enumConst.INTERVAL}" lay-filter="${enumConst.INTERVAL}"> | ||
5517 | + <option value="1">1秒</option> | ||
5518 | + </select> | ||
5519 | + </div> | ||
5520 | + </div>` | ||
5521 | + } | ||
5522 | + | ||
5523 | + function generatorEventlisten() { | ||
5524 | + form.on(`select(${enumActionEL.SCOPE_FILTER})`, event => { | ||
5525 | + console.log(event) | ||
5526 | + const value = event.value || 0 | ||
5527 | + const options = defaultIntervalOptions[value].linkage.map(item => ({ id: item.id * unitConversion[item.unit], name: item.id + unitMapping[item.unit] })) | ||
5528 | + const template = UseLayUi.generateOptionTemplate({ | ||
5529 | + dataSource: options, | ||
5530 | + addPlaceholderOption: false | ||
5531 | + }) | ||
5532 | + $(`#${enumActionEL.INTERVAL_EL}`).html(template) | ||
5533 | + form.render('select') | ||
5534 | + }) | ||
5535 | + } | ||
5536 | + | ||
5537 | + fragment.append(title) | ||
5538 | + $(chartBindContainer).append(createSwitchBindTypeRadio()) | ||
5539 | + $(chartBindContainer).append(createQueryScopeSelect()) | ||
5540 | + $(chartBindContainer).append(createAggregationSelect()) | ||
5541 | + $(chartBindContainer).append(createIntervalSelect()) | ||
5542 | + fragment.append(chartBindContainer) | ||
5543 | + $(container).append(fragment) | ||
5544 | + generatorEventlisten() | ||
5545 | + } | ||
5430 | 5546 | ||
5431 | /** | 5547 | /** |
5432 | * @description 创建数据交互模块 | 5548 | * @description 创建数据交互模块 |
@@ -6162,7 +6278,7 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -6162,7 +6278,7 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
6162 | $(event.currentTarget).find('dl').css({ | 6278 | $(event.currentTarget).find('dl').css({ |
6163 | position: 'fixed', | 6279 | position: 'fixed', |
6164 | 'min-width': width + 'px', | 6280 | 'min-width': width + 'px', |
6165 | - top: offset.top + height + 'px', | 6281 | + top: offset.top + height + 'px', |
6166 | left: offset.left + 'px' | 6282 | left: offset.left + 'px' |
6167 | }) | 6283 | }) |
6168 | }) | 6284 | }) |
@@ -459,3 +459,24 @@ | @@ -459,3 +459,24 @@ | ||
459 | margin-left: 110px; | 459 | margin-left: 110px; |
460 | min-height: 36px; | 460 | min-height: 36px; |
461 | } | 461 | } |
462 | + | ||
463 | +// 展示类型 | ||
464 | + | ||
465 | +.chart-panel__style { | ||
466 | + padding: 10px; | ||
467 | +} | ||
468 | + | ||
469 | +.chart-panel__style .layui-form-item { | ||
470 | + display: flex | ||
471 | +} | ||
472 | + | ||
473 | +.chart-panel__style .layui-form-label{ | ||
474 | + width: 60px; | ||
475 | + box-sizing: border-box; | ||
476 | + padding: 9px 10px 9px 0; | ||
477 | +} | ||
478 | + | ||
479 | + | ||
480 | +.chart-panel__style .layui-input-block{ | ||
481 | + margin-left: 0px !important; | ||
482 | +} |