Commit 8058787c authored by ‘oliver.hui’'s avatar ‘oliver.hui’

x

parents
Pipeline #30180 passed with stage
in 1 minute and 39 seconds
# This file is used to ignore files which are generated
# ----------------------------------------------------------------------------
*~
*.autosave
*.a
*.core
*.moc
*.o
*.obj
*.orig
*.rej
*.so
*.so.*
*_pch.h.cpp
*_resource.rc
*.qm
.#*
*.*#
core
!core/
tags
.DS_Store
.directory
*.debug
Makefile*
*.prl
*.app
moc_*.cpp
ui_*.h
qrc_*.cpp
Thumbs.db
*.res
/.qmake.cache
/.qmake.stash
# qtcreator generated files
*.pro.user*
# xemacs temporary files
*.flc
# Vim temporary files
.*.swp
# Visual Studio generated files
*.ib_pdb_index
*.idb
*.ilk
*.pdb
*.sln
*.suo
*.vcproj
*vcproj.*.*.user
*.ncb
*.sdf
*.opensdf
*.vcxproj
*vcxproj.*
# MinGW generated files
*.Debug
*.Release
# Python byte code
*.pyc
# Binaries
# --------
*.dll
*.exe
# TopLinker
# ----------------------------------------------------------------------------
**/dist/
!src/plugin/*.qm
# SINCPM
sincpm-lock.json
# qdoc
qdoc/html/
*.qch
doc.tags
\ No newline at end of file
# Stages
stages:
- build
- test
- publish
# Cache
cache:
paths:
- dist/
# Jobs
windows_develop:
stage: build
only:
- develop
tags:
- win7
- ikm
variables:
QT_BIN: C:/DevTools/Qt5.6.3/5.6.3/msvc2015/bin
QTCREATOR_BIN: C:/DevTools/Qt5.6.3/Tools/QtCreator/bin
script:
- python ci/build.py -p $CI_PROJECT_DIR/src/toptemplateclass.pro -b $CI_PROJECT_DIR/build/$CI_COMMIT_REF_NAME/$CI_JOB_NAME -m release
linux_develop:
stage: build
only:
- develop
tags:
- centos6
- ikm
variables:
QT_BIN: /opt/Qt5.6.3/5.6.3/gcc_64/bin
script:
- python ci/build.py -p $CI_PROJECT_DIR/src/toptemplateclass.pro -b $CI_PROJECT_DIR/build/$CI_COMMIT_REF_NAME/$CI_JOB_NAME -m release
- python ci/build.py -p $CI_PROJECT_DIR/qdoc/$CI_PROJECT_NAME-qdoc.pro -b $CI_PROJECT_DIR/build/$CI_COMMIT_REF_NAME/$CI_JOB_NAME -m release
- export SSHPASS=$TOPIKM6_DOC_SERVER_SSHPASS
- sshpass -e scp -o stricthostkeychecking=no -prq qdoc/html/. $TOPIKM6_DOC_SERVER:/data/docker_data/topikm6doc/html/$CI_PROJECT_NAME/
- cp -TR qdoc/html/. $TOPIKM6_DOCS/$CI_PROJECT_NAME/
windows_master:
stage: build
only:
- master
tags:
- win7
- ikm
variables:
QT_BIN: C:/DevTools/Qt5.6.3/5.6.3/msvc2015/bin
QTCREATOR_BIN: C:/DevTools/Qt5.6.3/Tools/QtCreator/bin
script:
- python ci/build.py -p $CI_PROJECT_DIR/src/toptemplateclass.pro -b $CI_PROJECT_DIR/build/$CI_COMMIT_REF_NAME/$CI_JOB_NAME -m release
- python ci/build.py -p $CI_PROJECT_DIR/src/toptemplateclass.pro -b $CI_PROJECT_DIR/build/$CI_COMMIT_REF_NAME/$CI_JOB_NAME -m debug
- python ci/publish.py -p topikm6-templateclass
- python ci/publish.py -p topikm6-templateclass-debug
linux_master:
stage: build
only:
- master
tags:
- centos6
- ikm
variables:
QT_BIN: /opt/Qt5.6.3/5.6.3/gcc_64/bin
script:
- python ci/build.py -p $CI_PROJECT_DIR/src/toptemplateclass.pro -b $CI_PROJECT_DIR/build/$CI_COMMIT_REF_NAME/$CI_JOB_NAME -m release
- python ci/publish.py -p topikm6-templateclass
\ No newline at end of file
## 1.2.41 (2022-10-12)
- 模板4增加设置焦点函数
## 1.2.40 (2022-09-13)
- 模板4导航栏增加有效性验证
## 1.2.39 (2022-08-26)
- 模板4增加模块打开时是否执行refresh函数的配置
## 1.2.38 (2022-08-24)
- 模板4支持TSimplePageTool
## 1.2.37 (2022-07-01)
- 模板5数据刷新hook增加参数
## 1.2.36 (2022-03-18)
- 完成需求#7826 新需求-模版5masterWillUpdate及slaveWillUpdate钩子增加排序字段传参
## 1.2.35 (2021-12-23)
- 完成需求#7304 新需求-模版四分类导航新增重置按钮钩子
## 1.2.34 (2021-12-23)
- 完成需求#7299 新需求-模版四新增接口
## 1.2.33 (2021-11-30)
- 完成需求#7154 新需求-模板模块5子TableView无法实现翻页控件的设定
## 1.2.32 (2021-11-16)
- 模板4增加汇总信息展示
## 1.2.31 (2021-11-08)
- 完成需求#7008新需求-模版三支持表单、详细页面位置调整
## 1.2.30 (2021-10-28)
- 修复模板4分类导航栏设置默认选项后勾选状态不正确的bug
- 完成需求#6979 新需求-模版5增加导航栏配置
## 1.2.29 (2021-09-28)
- 完成需求#6828 新需求-模板模块1A增加额外的数据操作接口 #2
## 1.2.28 (2021-09-23)
- 完成需求#6791 优化-模板模块1A增加导航栏
## 1.2.27 (2021-09-22)
- 修复BUG#11717 【切片实验室】切片异常,设置高级查询,将设置保存为常用查询无法保存
## 1.2.26 (2021-08-05)
- 修复BUG#11325 【模板模块2】模板模块2 UI无法自适应界面
## 1.2.25 (2021-06-30)
- 模板二优化界面布局
## 1.2.24 (2021-05-12)
- 模板四支持详情界面右键菜单
## 1.2.23 (2021-05-11)
- 完成需求5808 新需求-模板模块二支持tableview右键菜单
## 1.2.22 (2021-04-30)
- 完成需求#5760 新需求-开发支持图表的模板模块
## 1.2.21 (2021-04-28)
- 完成需求#5761 新需求-模板模块增加复合导航(ui+categorytreeview)
## 1.2.20 (2021-04-19)
- 模板4绑定TableView表头排序信号到槽refreshToolBarState(),用于刷新uiLoader中的按钮状态
## 1.2.19 (2021-04-13)
- 模板4功能newItem时详细表单uiloader设置enable为true
## 1.2.18 (2021-04-12)
- 模板4导航栏优化
## 1.2.17 (2021-04-12)
- 模板4导航栏优化
## 1.2.16 (2021-04-09)
- 模板4刷新表格数据时,刷新控件状态
## 1.2.15 (2021-04-08)
- 修复BUG#10459 【ERP-销售订单V2】右侧刷新错误
## 1.2.14 (2021-03-30)
- 模板4当uiLoader为空时,触发detailUidChanged时不刷新界面数据
## 1.2.13 (2021-03-05)
- 修复BUG#10068 模板4增加UiLoader中TableView触发selectionChanged信号刷新控件state
## 1.2.12 (2021-03-02)
- 修复模板2中刷新页面时工具栏状态没有变化的bug
## 1.2.11 (2021-01-05)
- 修复topikm6-templateclass qdoc 配置不起作用的bug
- 修复BUG#9599 【功能配置】 模板模块新增导航栏配置功能
## 1.2.8 (2020-08-27)
- 添加topikm6-templateclass qdoc 配置
- 修改分类导航翻译
- 增加右界面刷新提示
## 1.2.7 (2020-08-18)
- 修复BUG#7461 【分类导航】模板类问题
## 1.2.5 (2020-08-06)
- 模板7增加导航的ObjectName标识
## 1.2.4 (2020-07-23)
- 模板4增加各部分的ObjectName,以方便写标准导出的逻辑
- 模板4支持navi.__type__为None
## 1.2.3 (2020-07-06)
- 修复BUG#6869 【TopTemplateClass4】左侧添加第六种过滤栏
## 1.2.2 (2020-06-19)
- 模板4支持合并单元格
## 1.2.1 (2020-06-18)
- sincpm.json中加入上传翻译文件
## 1.2.0 (2020-06-15)
- 模板4增加导航类型配置`navi.__type__`, 目前支持None, CategoryTreeView, UiLoader
## 1.1.17 (2020-04-17)
- 修复BUG#6005 【win7】【属性名称列表】模板模块刷新成功提示信息修改
## 1.1.16 (2020-04-08)
- TopTemplateClass5详情页面优化:支持MaskFrame, 提供isDetailModified接口
## 1.1.15 (2020-03-25)
- TopTemplateClass5增加返回详情表单的接口以及从表选中一行数据的接口
## 1.1.14 (2020-03-20)
- 修复TopTemplateClass3新建数据后无法设置detailUid的bug
## 1.1.13 (2020-03-11)
- 完成3569 新需求-模板模块TopTemplateClass6增加功能
## 1.1.12 (2020-02-24)
- 模板7界面、刷新函数优化,添加表格选中接口
## 1.1.10 (2020-02-20)
- 修复BUG#5105 【win7】模板7(TopTemplateClass7 )的分类导航改为可收缩
## 1.1.8 (2020-02-18)
- 修复未配置导航栏导致按钮遮挡的问题
## 1.1.5 (2020-01-13)
- 增加toputil依赖
- 修复模板7在detail表单不存在的情况下,选中条目时无数据的bug
## 1.1.4 (2019-12-30)
- 生成的库文件增加版本信息
## 1.1.3 (2019-12-25)
- 修复了模板4类左侧table刷新后,右侧详细信息等都不清掉的bug
- 修复了模板7类左侧table刷新后,右侧详细信息不清除的bug
## 1.1.2 (2019-12-19)
- 模板4添加多表联查功能
## 1.1.1 (2019-12-11)
- 修复BUG#4621 【win10】【料号信息】叠构拼板界面尺寸异常
## 1.1.0 (2019-12-09)
- 替换topsdk依赖为sincpm依赖
## 1.0.3 (2019-11-20)
- 解决模板4导航枚举默认选中未生效的问题;
- 修改模板3中关联信号槽,将mTableView->selectionModel()关联到模板3的selectionChanged;
- 修改模板3module配置中db_table_name为空时不查询数据
## 1.0.2 (2019-11-19)
- 模板4界面优化;
- 修复模板4,新建数据保存后,再次点击新建,还是前一次保存的数据bug
- 模板2表单在布局中靠上排列;
## 1.0.1 (2019-11-19)
- 修改模板7,删除钩子tableWillUpdate等不必要的钩子
- 规范目录结构,增加CI配置
- 模板7对搜索栏数据转成sql where语句函数添加对 in 操作符的处理
- 模板7当db_sql为空和db_table_name为空时不作处理
- 添加模板7说明
- 模板4在不配置详情ui的情况下隐藏详情页空白;
## 1.0.0 (2019-11-11)
- 第一次发布
\ No newline at end of file
# topikm6-templateclass
[![pipeline status](http://gitlab.topibd.net/topikm6/topikm6-templateclass/badges/master/pipeline.svg)](http://gitlab.topibd.net/topikm6/topikm6-templateclass/commits/master)
[![pipeline status](http://gitlab.topibd.net/topikm6/topikm6-templateclass/badges/develop/pipeline.svg)](http://gitlab.topibd.net/topikm6/topikm6-templateclass/commits/develop)
- TopTemplateClass0
空模板
- TopTemplateClass0A
空模板,可配置背景。常用来做首页。
- TopTemplateClass1
单表模板。常用做单张表的信息展示。
- TopTemplateClass1A
单表模板,控件为TreeView。
- TopTemplateClass2
表单模板。常用做表单展示。
- TopTemplateClass3
带详细信息的单表模板,左右结构。
- TopTemplateClass4
带导航过滤,带详细信息的单表模板,左中右结构。
- TopTemplateClass5
主从表模板,左右结构,用两个TableView展示。
- TopTemplateClass6
报表模板1,设计参考 http://doc.topibd.net/docs/topmes_v6/topmes_v6-1bgqpndr7b42c
- TopTemplateClass7
报表模板2,左右结构,带有搜索栏的报表展示,有搜索栏+TableView,另外有详情表单可选
## 如何发布?
### CI发布(推荐)
默认规则:当将代码从develop分支合并到master分支,进行包发布。目前CI只自动发布release版本。
0. 修改sincpm.json中的版本号
1. 修改src/plugin/plugin.pro中的版本号
2. 在CHANGELOG.md中添加新版本的发布日志
3. 将代码从develop分支合并到master分支
### 手动发布(不推荐)
0. (若未安装sincpm) 安装[sincpm](http://gitlab.topibd.net/topsin/topsin-sincpm/releases),配置好环境变量
1. 修改sincpm.json中的版本号
2. 修改src/plugin/plugin.pro中的版本号
3. 在CHANGELOG.md中添加新版本的发布日志
4. 在根目录下打包
```bash
sincpm package topikm6-templateclass
```
5. 在sincpm的local目录下上传包,例如
```bash
cd local
cd topikm6-templateclass
sincpm upload [topikm6-templateclass]-[1.0.0]-[windows-x86-msvc2015]-[qt5.6.3]
```
\ No newline at end of file
'''
@File: build.py
@Description: CI Build Script
@Author: leon.li(l2m2lq@gmail.com)
@Date: 2019-09-12 08:53:45
'''
import argparse
import sys
import qtciutil
import os
import subprocess
def sincpm_bin(cmd):
return qtciutil.common_cmd('SINCPM_BIN', cmd)
def sincpm_update():
# check sincpm.json if exists
ci_script_dir = os.path.dirname(os.path.realpath(__file__))
filepath = os.path.join(ci_script_dir, "../sincpm.json")
if not os.path.isfile(filepath):
raise qtciutil.QtCiUtilError("no sincpm.json found.")
# get platform infomation
qt_verison_str = qtciutil.qt_version()
qmake_spec_str = qtciutil.qmake_spec()
compiler_str = qmake_spec_str.split('-')[1]
if compiler_str == 'g++':
compiler_str = 'gcc'
os_system = qtciutil.platform_system()
arch_str = 'x64'
if os_system == 'windows':
arch_str = 'x86'
# sincpm update
update_args = [sincpm_bin('sincpm'), 'update']
update_args.append('--os=%s' % os_system)
update_args.append('--qt=%s' % qt_verison_str)
update_args.append('--compiler=%s' % compiler_str)
update_args.append('--arch=%s' % arch_str)
print("update_args: ", update_args)
pinfo = subprocess.run(update_args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
if pinfo.returncode != 0:
raise qtciutil.QtCiUtilError("sincpm update failed.")
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Build Arg Parser')
parser.add_argument('--pro_file', '-p', type=str, required=True,
help='pro path', metavar='$CI_PROJECT_DIR/src/something.pro')
parser.add_argument('--build_dir', '-b', type=str, required=True,
help='build directory', metavar='$CI_PROJECT_DIR/build')
parser.add_argument('--mode', '-m', type=str, required=True,
help='debug or release', metavar='release')
args = vars(parser.parse_args())
pro_file = args['pro_file']
build_dir = args['build_dir']
mode = args['mode']
sincpm_update()
qtciutil.build(pro_file, build_dir, mode)
'''
@File: publish.py
@Description: CI Publish Script
@Author: leon.li(l2m2lq@gmail.com)
@Date: 2019-09-12 14:05:07
'''
import platform
import os
import argparse
import sys
import subprocess
import glob
import re
import json
import qtciutil
def sincpm_bin(cmd):
return qtciutil.common_cmd('SINCPM_BIN', cmd)
def sincpm_publish(pkg_name):
# check sincpm.json if exists
ci_script_dir = os.path.dirname(os.path.realpath(__file__))
filepath = os.path.join(ci_script_dir, "../sincpm.json")
if not os.path.isfile(filepath):
raise qtciutil.QtCiUtilError("no sincpm.json found.")
# get platform infomation
qt_verison_str = qtciutil.qt_version()
qmake_spec_str = qtciutil.qmake_spec()
compiler_str = qmake_spec_str.split('-')[1]
if compiler_str == 'g++':
compiler_str = 'gcc'
os_system = qtciutil.platform_system()
arch_str = 'x64'
if os_system == 'windows':
arch_str = 'x86'
# sincpm package
package_args = [sincpm_bin('sincpm'), 'package']
package_args.append('--os=%s' % os_system)
package_args.append('--qt=%s' % qt_verison_str)
package_args.append('--compiler=%s' % compiler_str)
package_args.append('--arch=%s' % arch_str)
package_args.append(pkg_name)
print("package_args: ", package_args)
pinfo = subprocess.run(package_args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
if pinfo.returncode != 0:
raise qtciutil.QtCiUtilError("sincpm pakcage failed.")
output = pinfo.stdout.decode('utf-8')
print("sincpm pakcage output: %s" % output)
m = re.search(r'package to "(.*)/(.*)"', output)
if not m:
raise qtciutil.QtCiUtilError("sincpm package failed. No expected output.")
# sincpm upload
local_dir = m.group(1)
pkg_dir = m.group(2)
os.chdir(local_dir)
pinfo = subprocess.run([sincpm_bin('sincpm'), 'upload', pkg_dir],
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
if pinfo.returncode != 0:
raise qtciutil.QtCiUtilError("sincpm upload failed.")
m = re.search(r'error: ', pinfo.stdout.decode('utf-8'), re.IGNORECASE)
if m:
raise qtciutil.QtCiUtilError("The upload result contains an error message.")
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Publish Arg Parser')
parser.add_argument('--package_name', '-p', type=str, required=True,
help='package name', metavar='topikm6-tpm')
args = vars(parser.parse_args())
package_name = args['package_name']
sincpm_publish(package_name)
print("Successfully published.")
\ No newline at end of file
'''
@File: test.py
@Description: CI Test Script
@Author: leon.li(l2m2lq@gmail.com)
@Date: 2019-09-12 14:04:39
'''
import argparse
import qtciutil
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Build Arg Parser')
parser.add_argument('--pro_file', '-p', type=str, required=True,
help='pro path', metavar='$CI_PROJECT_DIR/test/something.pro')
parser.add_argument('--build_dir', '-b', type=str, required=True,
help='build directory', metavar='$CI_PROJECT_DIR/build')
parser.add_argument('--dist_dir', '-d', type=str, required=True,
help='dist directory', metavar='$CI_PROJECT_DIR/dist')
args = vars(parser.parse_args())
pro_file = args['pro_file']
build_dir = args['build_dir']
dist_dir = args['dist_dir']
qtciutil.unit_test(pro_file, build_dir, dist_dir)
\ No newline at end of file
TEMPLATE = subdirs
SUBDIRS += templatemain
CONFIG += ordered
# 枚举类信息
label: "TopMes/Attr Name Mgt/Data Type"
label_en: "TopMes/Attr Name Mgt/Data Type"
label_zhcn: "TopMes/属性名称列表/数据类型"
label_zhtw: "TopMes/屬性名稱列表/數據類型"
remark: ""
# 枚举项信息
items :[
{"name":"attachment","icon":"","text":"Attachment","text_zhcn":"附件","text_zhtw":"Attachment","remark":"","tags":[],"data":
{"fieldType":"VARCHAR","fieldLength":255,"widgetType":"Attachment"}},
{"name":"string","icon":"","text":"String","text_zhcn":"字符串","text_zhtw":"String","remark":"","tags":[],"data":
{"fieldType":"VARCHAR","fieldLength":255,"widgetType":"LineEdit"}},
{"name":"integer","icon":"","text":"Integer","text_zhcn":"整数","text_zhtw":"Integer","remark":"","tags":[],"data":
{"fieldType":"INTEGER","fieldLength":255,"widgetType":"LineEdit"}},
{"name":"number","icon":"","text":"Number","text_zhcn":"数字","text_zhtw":"Number","remark":"","tags":[],"data":
{"fieldType":"DOUBLE","fieldLength":255,"widgetType":"LineEdit"}},
{"name":"enum","icon":"","text":"EnumList","text_zhcn":"选项列表(单选不可编辑)","text_zhtw":"EnumList","remark":"","tags":[],"data":
{"fieldType":"VARCHAR","fieldLength":255,"widgetType":"ComboBox"}},
{"name":"multiple_enum","icon":"","text":"MultipleEnum","text_zhcn":"可多选列表","text_zhtw":"MultipleEnum","remark":"","tags":[],"data":
{"fieldType":"VARCHAR","fieldLength":255,"widgetType":"MultiComboBox"}},
{"name":"editable_enum","icon":"","text":"EditableEnum","text_zhcn":"选项列表(单选可编辑)","text_zhtw":"EditableEnum","remark":"","tags":[],"data":
{"fieldType":"VARCHAR","fieldLength":255,"widgetType":"EditableComboBox"}},
{"name":"radio_box","icon":"","text":"RadioBox","text_zhcn":"单选框","text_zhtw":"RadioBox","remark":"","tags":[],"data":
{"fieldType":"VARCHAR","fieldLength":255,"widgetType":"RadioBox"}},
{"name":"check_box","icon":"","text":"CheckBox","text_zhcn":"复选框","text_zhtw":"CheckBox","remark":"","tags":[],"data":
{"fieldType":"VARCHAR","fieldLength":255,"widgetType":"CheckBox"}},
{"name":"multiple_check","icon":"","text":"MultipleCheck","text_zhcn":"可多选复选框","text_zhtw":"MultipleCheck","remark":"","tags":[],"data":
{"fieldType":"VARCHAR","fieldLength":255,"widgetType":"MultiCheckBox"}},
{"name":"plain_text","icon":"","text":"PlainText","text_zhcn":"文本(不可变字体及颜色)","text_zhtw":"PlainText","remark":"","tags":[],"data":
{"fieldType":"TEXT","fieldLength":255,"widgetType":"PlainTextEdit"}},
{"name":"text","icon":"","text":"Text","text_zhcn":"富文本(字体及颜色可变)","text_zhtw":"Text","remark":"","tags":[],"data":
{"fieldType":"TEXT","fieldLength":255,"widgetType":"TextEdit"}},
{"name":"date_time","icon":"","text":"DateTime","text_zhcn":"日期时间","text_zhtw":"DateTime","remark":"","tags":[],"data":
{"fieldType":"TIMESTAMP","fieldLength":255,"widgetType":"DateTimeEdit"}},
{"name":"date","icon":"","text":"Date","text_zhcn":"日期","text_zhtw":"Date","remark":"","tags":[],"data":
{"fieldType":"DATE","fieldLength":255,"widgetType":"DateEdit"}},
{"name":"time","icon":"","text":"Time","text_zhcn":"时间","text_zhtw":"Time","remark":"","tags":[],"data":
{"fieldType":"TIMESTAMP","fieldLength":255,"widgetType":"TimeEdit"}},
{"name":"table_view","icon":"","text":"TableView","text_zhcn":"表格","text_zhtw":"TableView","remark":"","tags":[],"data":
{"fieldType":"Text","fieldLength":255,"widgetType":"TableView"}},
{"name":"code","icon":"","text":"CodeEdit","text_zhcn":"代码片段","text_zhtw":"CodeEdit","remark":"","tags":[],"data":
{"fieldType":"TEXT","fieldLength":255,"widgetType":"CodeEdit"}},
{"name":"tree_view","icon":"","text":"TreeView","text_zhcn":"树形","text_zhtw":"TreeView","remark":"","tags":[],"data":
{"fieldType":"Text","fieldLength":255,"widgetType":"PcbPdmTreeView"}}
]
\ No newline at end of file
# 枚举类信息
label: "TopPDM/Attr Name Mgt/Attr Category"
label_en: "TopPDM/Attr Name Mgt/Attr Category"
label_zhcn: "东领产品数据管理/属性名称列表/属性分类"
label_zhtw: "東領產品數據管理/屬性名稱列表/屬性分類"
remark: ""
# 枚举项信息
items :[
{"name":"info","icon":"","text":"Info","text_zhcn":"Info","text_zhtw":"Info","remark":"","tags":[],"data":null},
{"name":"drill","icon":"","text":"Drill","text_zhcn":"钻孔","text_zhtw":"鑽孔","remark":"","tags":[],"data":null},
{"name":"inner","icon":"","text":"Inner","text_zhcn":"内层","text_zhtw":"內層","remark":"","tags":[],"data":null},
{"name":"outer","icon":"","text":"Outer","text_zhcn":"外层","text_zhtw":"外層","remark":"","tags":[],"data":null},
{"name":"relam","icon":"","text":"Relam","text_zhcn":"层压","text_zhtw":"層壓","remark":"","tags":[],"data":null},
{"name":"soldermask","icon":"","text":"SM","text_zhcn":"防焊","text_zhtw":"防焊","remark":"","tags":[],"data":null},
{"name":"silkscreen","icon":"","text":"SS","text_zhcn":"字符","text_zhtw":"字符","remark":"","tags":[],"data":null},
{"name":"logo","icon":"","text":"Logo","text_zhcn":"Logo","text_zhtw":"Logo","remark":"","tags":[],"data":null},
{"name":"surface","icon":"","text":"Surface","text_zhcn":"表面处理","text_zhtw":"表面處理","remark":"","tags":[],"data":null},
{"name":"contour","icon":"","text":"Contour","text_zhcn":"外形","text_zhtw":"外形","remark":"","tags":[],"data":null},
{"name":"quote","icon":"","text":"Quote","text_zhcn":"报价","text_zhtw":"報價","remark":"","tags":[],"data":null},
{"name":"other","icon":"","text":"Other","text_zhcn":"其他","text_zhtw":"其他","remark":"","tags":[],"data":null},
{"name":"sys","icon":"","text":"Sys","text_zhcn":"系统","text_zhtw":"系統","remark":"","tags":[],"data":null}
]
\ No newline at end of file
# 枚举类信息
label: "TopPDM/Attr Name Mgt/Attr Type"
label_en: "TopPDM/Attr Name Mgt/Attr Type"
label_zhcn: "东领产品数据管理/属性名称列表/属性类型"
label_zhtw: "東領產品數據管理/屬性名稱列表/屬性類型"
remark: ""
# 枚举项信息
items :[
{"name":"job","icon":"","text":"Job","text_zhcn":"料号属性","text_zhtw":"料號屬性","remark":"","tags":[],"data":null},
{"name":"layer","icon":"","text":"Layer","text_zhcn":"层属性","text_zhtw":"層屬性","remark":"","tags":[],"data":null}
]
\ No newline at end of file
# 枚举类信息
label: "TopPDM/Attr Name Mgt/Data Type"
label_en: "TopPDM/Attr Name Mgt/Data Type"
label_zhcn: "东领产品数据管理/属性名称列表/数据类型"
label_zhtw: "東領產品數據管理/屬性名稱列表/數據類型"
remark: ""
# 枚举项信息
items :[
{"name":"attachment","icon":"","text":"Attachment","text_zhcn":"附件","text_zhtw":"Attachment","remark":"","tags":[],"data":
{"fieldType":"VARCHAR","fieldLength":255,"widgetType":"Attachment"}},
{"name":"string","icon":"","text":"String","text_zhcn":"字符串","text_zhtw":"String","remark":"","tags":[],"data":
{"fieldType":"VARCHAR","fieldLength":255,"widgetType":"LineEdit"}},
{"name":"integer","icon":"","text":"Integer","text_zhcn":"整数","text_zhtw":"Integer","remark":"","tags":[],"data":
{"fieldType":"INTEGER","fieldLength":255,"widgetType":"LineEdit"}},
{"name":"number","icon":"","text":"Number","text_zhcn":"数字","text_zhtw":"Number","remark":"","tags":[],"data":
{"fieldType":"DOUBLE","fieldLength":255,"widgetType":"LineEdit"}},
{"name":"length_entry","icon":"","text":"LengthEntry","text_zhcn":"数字(单位转换)","text_zhtw":"數字(單位轉換)","remark":"","tags":[],"data":
{"fieldType":"DOUBLE","fieldLength":255,"widgetType":"LengthValueEntry"}},
{"name":"enum","icon":"","text":"EnumList","text_zhcn":"选项列表(单选不可编辑)","text_zhtw":"EnumList","remark":"","tags":[],"data":
{"fieldType":"VARCHAR","fieldLength":255,"widgetType":"ComboBox"}},
{"name":"multiple_enum","icon":"","text":"MultipleEnum","text_zhcn":"可多选列表","text_zhtw":"MultipleEnum","remark":"","tags":[],"data":
{"fieldType":"VARCHAR","fieldLength":255,"widgetType":"MultiComboBox"}},
{"name":"editable_enum","icon":"","text":"EditableEnum","text_zhcn":"选项列表(单选可编辑)","text_zhtw":"EditableEnum","remark":"","tags":[],"data":
{"fieldType":"VARCHAR","fieldLength":255,"widgetType":"EditableComboBox"}},
{"name":"radio_box","icon":"","text":"RadioBox","text_zhcn":"单选框","text_zhtw":"RadioBox","remark":"","tags":[],"data":
{"fieldType":"VARCHAR","fieldLength":255,"widgetType":"RadioBox"}},
{"name":"check_box","icon":"","text":"CheckBox","text_zhcn":"复选框","text_zhtw":"CheckBox","remark":"","tags":[],"data":
{"fieldType":"VARCHAR","fieldLength":255,"widgetType":"CheckBox"}},
{"name":"multiple_check","icon":"","text":"MultipleCheck","text_zhcn":"可多选复选框","text_zhtw":"MultipleCheck","remark":"","tags":[],"data":
{"fieldType":"VARCHAR","fieldLength":255,"widgetType":"MultiCheckBox"}},
{"name":"plain_text","icon":"","text":"PlainText","text_zhcn":"文本(不可变字体及颜色)","text_zhtw":"PlainText","remark":"","tags":[],"data":
{"fieldType":"TEXT","fieldLength":255,"widgetType":"PlainTextEdit"}},
{"name":"text","icon":"","text":"Text","text_zhcn":"富文本(字体及颜色可变)","text_zhtw":"Text","remark":"","tags":[],"data":
{"fieldType":"TEXT","fieldLength":255,"widgetType":"TextEdit"}},
{"name":"date_time","icon":"","text":"DateTime","text_zhcn":"日期时间","text_zhtw":"DateTime","remark":"","tags":[],"data":
{"fieldType":"TIMESTAMP","fieldLength":255,"widgetType":"DateTimeEdit"}},
{"name":"date","icon":"","text":"Date","text_zhcn":"日期","text_zhtw":"Date","remark":"","tags":[],"data":
{"fieldType":"DATE","fieldLength":255,"widgetType":"DateEdit"}},
{"name":"time","icon":"","text":"Time","text_zhcn":"时间","text_zhtw":"Time","remark":"","tags":[],"data":
{"fieldType":"TIMESTAMP","fieldLength":255,"widgetType":"TimeEdit"}},
{"name":"table_view","icon":"","text":"TableView","text_zhcn":"表格","text_zhtw":"TableView","remark":"","tags":[],"data":
{"fieldType":"Text","fieldLength":255,"widgetType":"TableView"}},
{"name":"code","icon":"","text":"CodeEdit","text_zhcn":"代码片段","text_zhtw":"CodeEdit","remark":"","tags":[],"data":
{"fieldType":"TEXT","fieldLength":255,"widgetType":"CodeEdit"}},
{"name":"tree_view","icon":"","text":"TreeView","text_zhcn":"树形","text_zhtw":"TreeView","remark":"","tags":[],"data":
{"fieldType":"Text","fieldLength":255,"widgetType":"PcbPdmTreeView"}}
]
\ No newline at end of file
# 枚举类信息
label: "TopPDM/Attr Name Mgt/Department"
label_en: "TopPDM/Attr Name Mgt/Department"
label_zhcn: "东领产品数据管理/属性名称列表/部门"
label_zhtw: "東領產品數據管理/屬性名稱列表/部門"
remark: ""
# 枚举项信息
items :[
{"name":"sales","icon":"","text":"Sales","text_zhcn":"销售","text_zhtw":"銷售","remark":"","tags":[],"data":null},
{"name":"mi","icon":"","text":"MI","text_zhcn":"预审","text_zhtw":"預審","remark":"","tags":[],"data":null},
{"name":"cam","icon":"","text":"CAM","text_zhcn":"CAM","text_zhtw":"CAM","remark":"","tags":[],"data":null}
]
\ No newline at end of file
# 枚举类信息
label: "TopPDM/Job Management/Job Status"
label_en: "TopPDM/Job Management/Job Status"
label_zhcn: "东领产品数据管理/料号管理/料号状态"
label_zhtw: "東領產品數據管理/料號管理/料號狀態"
remark: ""
# 枚举项信息
items :[
{"name":"active","icon":"play-circle-o.#27ad3a","text":"Active","text_zhcn":"激活","text_zhtw":"激活","remark":"","tags":[]},
{"name":"finish","icon":"check-circle-o.#3366ff","text":"Finish","text_zhcn":"结案","text_zhtw":"結案","remark":"","tags":[]},
{"name":"pause","icon":"pause-circle-o.#f49138","text":"Pause","text_zhcn":"暂停","text_zhtw":"暫停","remark":"","tags":[]},
{"name":"cancel","icon":"times-circle-o.#e82525","text":"Cancel","text_zhcn":"取消","text_zhtw":"取消","remark":"","tags":[]}
]
\ No newline at end of file
# 枚举类信息
label: "TopPDM/Job Management/Job Type"
label_en: "TopPDM/Job Management/Job Type"
label_zhcn: "东领产品数据管理/料号管理/料号类型"
label_zhtw: "東領產品數據管理/料號管理/料號類型"
remark: ""
# 枚举项信息
items :[
{"name":"normal","icon":"","text":"Normal","text_zhcn":"厂内料号","text_zhtw":"廠內料號","remark":"","tags":[]},
{"name":"combine","icon":"","text":"Combine","text_zhcn":"合拼料号","text_zhtw":"合拼料號","remark":"","tags":[]},
{"name":"sub_job","icon":"","text":"SubJob","text_zhcn":"子料号","text_zhtw":"子料號","remark":"","tags":[]}
]
\ No newline at end of file
# 枚举类信息
label: "User Status"
label_en: "User Status"
label_zhcn: "用户状态"
label_zhtw: "用戶狀態"
remark: ""
# 枚举项信息
items :[
{"name":"active","icon":"check-circle-o.#00B100","text":"Active","text_zhcn":"激活","text_zhtw":"激活","remark":"","tags":[],"data":null},
{"name":"inactive","icon":"minus-circle-o.#FD2525","text":"Inactive","text_zhcn":"失效","text_zhtw":"失效","remark":"","tags":[],"data":null}
]
\ No newline at end of file
# 枚举类信息
label: "MES/Mes TPM Maintenance Category/Plan Category"
label_en: "MES/Mes TPM Maintenance PlCategoryan/Plan Category"
label_zhcn: "MES/维护计划/计划分类"
label_zhtw: "MES/维护计划/计划分类"
remark: ""
# 枚举项信息
items :[
{"name":"overhaul","icon":"","text":"大修","text_zhcn":"大修","text_zhtw":"大修","remark":"","tags":[]},
{"name":"part_repairing","icon":"","text":"局部维修","text_zhcn":"局部维修","text_zhtw":"局部维修","remark":"","tags":[]},
{"name":"lubrication","icon":"","text":"润滑保养","text_zhcn":"润滑保养","text_zhtw":"润滑保养","remark":"","tags":[]},
{"name":"sealing","icon":"","text":"密封保养","text_zhcn":"密封保养","text_zhtw":"密封保养","remark":"","tags":[]}
]
\ No newline at end of file
# 枚举类信息
label: "MES/Mes TPM Maintenance Class/Maintenance Class"
label_en: "MES/Mes TPM Maintenance Class/Maintenance Class"
label_zhcn: "MES/维护计划/维护分类"
label_zhtw: "MES/维护计划/维护分类"
remark: ""
# 枚举项信息
items :[
{"name":"repair","icon":"","text":"维修","text_zhcn":"维修","text_zhtw":"维修","remark":"","tags":[]},
{"name":"maintenance","icon":"","text":"保养","text_zhcn":"保养","text_zhtw":"保养","remark":"","tags":[]},
{"name":"spot_check","icon":"","text":"点检","text_zhcn":"点检","text_zhtw":"点检","remark":"","tags":[]}
]
\ No newline at end of file
# 枚举类信息
label: "MES/Mes TPM Maintenance Class/Maintenance Cycle"
label_en: "MES/Mes TPM Maintenance Class/Maintenance Cycle"
label_zhcn: "MES/维护计划/维护周期"
label_zhtw: "MES/维护计划/维护周期"
remark: ""
# 枚举项信息
items :[
{"name":"day","icon":"","text":"天","text_zhcn":"天","text_zhtw":"天","remark":"","tags":[]},
{"name":"week","icon":"","text":"周","text_zhcn":"周","text_zhtw":"周","remark":"","tags":[]},
{"name":"month","icon":"","text":"月","text_zhcn":"月","text_zhtw":"月","remark":"","tags":[]}
]
\ No newline at end of file
# 枚举类信息
label: "MES/Mes TPM Maintenance Category/Plan Execution Cycle"
label_en: "MES/Mes TPM Maintenance PlCategoryan/Plan Execution Cycle"
label_zhcn: "MES/维护计划/计划执行周期"
label_zhtw: "MES/维护计划/计划执行周期"
remark: ""
# 枚举项信息
items :[
{"name":"once","icon":"","text":"单次","text_zhcn":"单次","text_zhtw":"单次","remark":"","tags":[]},
{"name":"cycle","icon":"","text":"周期","text_zhcn":"周期","text_zhtw":"周期","remark":"","tags":[]}
]
\ No newline at end of file
# 枚举类信息
label: "MES/Mes TPM Maintenance Plan/Plan Priority"
label_en: "MES/Mes TPM Maintenance Plan/Plan Priority"
label_zhcn: "MES/维护计划/计划优先级"
label_zhtw: "MES/维护计划/计划优先级"
remark: ""
# 枚举项信息
items :[
{"name":"1","icon":"","text":"1","text_zhcn":"1","text_zhtw":"1","remark":"","tags":[]},
{"name":"2","icon":"","text":"2","text_zhcn":"2","text_zhtw":"2","remark":"","tags":[]},
{"name":"3","icon":"","text":"3","text_zhcn":"3","text_zhtw":"3","remark":"","tags":[]}
]
\ No newline at end of file
# 枚举类信息
label: "MES/Mes TPM Maintenance Plan/Plan Status"
label_en: "MES/Mes TPM Maintenance Plan/Plan Status"
label_zhcn: "MES/维护计划/计划状态"
label_zhtw: "MES/维护计划/计划状态"
remark: ""
# 枚举项信息
items :[
{"name":"waiting","icon":"","text":"待执行","text_zhcn":"待执行","text_zhtw":"待执行","remark":"","tags":[]},
{"name":"doing","icon":"","text":"执行中","text_zhcn":"执行中","text_zhtw":"执行中","remark":"","tags":[]},
{"name":"finished","icon":"","text":"已完成","text_zhcn":"已完成","text_zhtw":"已完成","remark":"","tags":[]}
]
\ No newline at end of file
try {
this.showAboutDialog();
} catch (e) {
print(e);
}
/*---ACTION---
ICON: ""
LABEL: "About"
LABEL_ZHCN: "关于"
LABEL_ZHTW: "關於"
ACCEL: ""
TOOLTIP: "About"
TOOLTIP_ZHCN: "关于"
TOOLTIP_ZHTW: "關於"
CHECKED: ""
GROUP: ""
STYLE: "size=small button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: ""
---ACTION---*/
\ No newline at end of file
try {
this.showPasswordModificationDialog();
} catch (e) {
print(e);
}
/*---ACTION---
ICON: ""
LABEL: "Modify Password"
LABEL_ZHCN: "修改密码"
LABEL_ZHCN: "修改密碼"
ACCEL: ""
TOOLTIP: "Modify Password"
TOOLTIP_ZHCN: "修改密码"
TOOLTIP_ZHTW: "修改密碼"
CHECKED: ""
GROUP: ""
STYLE: "size=small button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: ""
---ACTION---*/
\ No newline at end of file
try {
this.openModuleUpgrade();
} catch (e) {
print(e);
}
/*---ACTION---
ICON: ""
LABEL: "Module Upgrade"
LABEL_ZHCN: "模块更新"
LABEL_ZHTW: "模塊更新"
ACCEL: ""
TOOLTIP: "Module Upgrade"
TOOLTIP_ZHCN: "模块更新"
TOOLTIP_ZHTW: "模塊更新"
CHECKED: ""
GROUP: ""
STYLE: "size=small button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: ""
---ACTION---*/
\ No newline at end of file
try {
this.close();
} catch (e) {
print(e);
}
/*---ACTION---
ICON: ""
LABEL: "Quit"
LABEL_ZHCN: "关闭"
LABEL_ZHTW: "關閉"
ACCEL: ""
TOOLTIP: "Quit"
TOOLTIP_ZHCN: "关闭"
TOOLTIP_ZHTW: "關閉"
CHECKED: ""
GROUP: ""
STYLE: "size=small button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: ""
---ACTION---*/
\ No newline at end of file
# 模块标题
sys_title: "Demo Summary"
sys_title_en: ""
sys_title_zhcn: "模板模块汇总"
sys_title_zhtw: ""
# 模块图标(普通图标在font awesome中找 http://fontawesome.io/icons/)
sys_icon: "toplinker-cd"
# 模块对应的插件DLL名称
sys_plugin: "topikm6-topsys-plugin"
# 模块对应的类名
sys_class: "SysMainWindow"
# 打开模块的权限
sys_open_right: ""
# 当关闭窗口时,如果提示是否保存,保存调用的action
sys_save_action: ""
# 该模块用到的枚举列表
sys_enum_list: []
# 该模块用到的除了Action之外的权限列表
sys_permission_list: []
# 产品版本号
product_version: "V0.0.1"
# 关于对话框配置
about_us {
title:"", title_en:"", title_zhcn:"", title_zhtw:"",
copyright:"", copyright_en:"", copyright_zhcn:"", copyright_zhtw:"",
lawdesc:"", lawdesc_en:"", lawdesc_zhcn:"", lawdesc_zhtw:"",
}
# 当左侧导航的moudle或action没有权限时的状态
# 状态包括 show, hide, disable
# 默认为show
navi_status_without_permission: "disable"
# 资源
resource: {
rcc: []
}
# 主桌面配置
desktop: {
"navi": [
{
"route_type": "module",
"icon": "code",
"title": "单表格",
"title_en": "",
"title_zhcn": "",
"title_zhtw": "",
"url_address": "template-demo-single-table"
},
{
"route_type": "module",
"icon": "code",
"title": "单树形表格",
"title_en": "",
"title_zhcn": "",
"title_zhtw": "",
"url_address": "template-demo-single-tree"
},
{
"route_type": "module",
"icon": "code",
"title": "表单",
"title_en": "",
"title_zhcn": "",
"title_zhtw": "",
"url_address": "template-demo-uiloader"
},
{
"route_type": "module",
"icon": "code",
"title": "带详情表单",
"title_en": "",
"title_zhcn": "",
"title_zhtw": "",
"url_address": "template-demo-table-with-detail"
},
{
"route_type": "module",
"icon": "code",
"title": "属性名称列表",
"title_en": "",
"title_zhcn": "",
"title_zhtw": "",
"url_address": "pdm-attr-name-mgt"
},
{
"route_type": "module",
"icon": "code",
"title": "叠构模板库",
"title_en": "",
"title_zhcn": "",
"title_zhtw": "",
"url_address": "pdm-stackup-template"
},
{
"route_type": "module",
"icon": "code",
"title": "主从表",
"title_en": "",
"title_zhcn": "",
"title_zhtw": "",
"url_address": "template-demo-master-slave"
},
{
"route_type": "menu",
"icon": "home",
"title": "System",
"title_en": "System",
"title_zhcn": "系统",
"title_zhtw": "系統",
"icon_bgcolor": "#3598DB",
"items": [
{
"route_type": "module",
"icon": "gears",
"title": "Module Setting",
"title_en": "Module Setting",
"title_zhcn": "模块配置",
"title_zhtw": "模塊配置",
"url_address": "module-conf-mgt"
},
{
"route_type": "module",
"icon": "gear",
"title": "Config Management",
"title_en": "Config Management",
"title_zhcn": "配置管理",
"title_zhtw": "配置管理",
"url_address": "sys-config-mgt"
},
{
"route_type": "action",
"icon": "cloud-upload",
"title": "Module Upgrade",
"title_en": "Module Upgrade",
"title_zhcn": "模块升级",
"title_zhtw": "模塊升级",
"url_address": "open_module_upgrade"
},
{
"route_type": "module",
"icon": "code",
"title": "Macro Console",
"title_en": "Macro Console",
"title_zhcn": "宏控制台",
"title_zhtw": "宏控制臺",
"url_address": "sys-macro-console"
},
{
"route_type": "module",
"icon": "file-text-o",
"title": "Log Console",
"title_en": "Log Console",
"title_zhcn": "后台日志",
"title_zhtw": "後台日誌",
"url_address": "sys-log-console"
},
{
"route_type": "action",
"icon": "lock",
"title": "Change Password",
"title_en": "Change Password",
"title_zhcn": "修改密码",
"title_zhtw": "修改密碼",
"url_address": "modifypwd"
},
{
"route_type": "action",
"icon": "info",
"title": "About",
"title_en": "About",
"title_zhcn": "关于",
"title_zhtw": "關於",
"url_address": "about"
},
{
"route_type": "action",
"icon": "sign-out",
"title": "Logout",
"title_en": "Logout",
"title_zhcn": "退出",
"title_zhtw": "退出",
"url_address": "quit"
}
]
}
]
}
this.afterModuleInit = function () {
var self = this;
var lang_def = APP.languageDefine();
// 根据语言定义确定要查的title_i18n
var cfg = self.config();
var data_keys = self.config('view.data_keys');
_.forEach(lang_def, function (v, k) {
data_keys.push('attr_data.title_i18n.' + k);
self.setUserData('attr_data.title_i18n.' + k + '.visible', 0);
});
_.set(cfg, 'view.data_keys', data_keys);
self.setConfig(cfg);
// 根据语言定义动态修改detail.ui.js
var detail_ui = self.ui('detail');
var title_i18n_actions = [];
var title_i18n_widgets = [];
var action_template_str = "{ \
type: 'Action', \
property: { text: '{0}', user_data: '{1}', checkable: true}, \
callback: function(obj, checked, self) { \
var lang = obj.getData('user_data'); \
self.setUserData('{2}'+lang+'.visible', checked); \
this.refreshState(); \
} \
}";
var widget_template_str = "{ \
name: '{0}', \
type: 'LineEdit', \
title: self.ttr('Title') + ' ({1})', \
pack: { label: self.ttr('Title') + ' ({1})' }, \
state: function(obj, self) { \
var v = self.userData('{0}.visible'); \
if (v) { \
return 'show'; \
} else { \
return 'hide'; \
} \
}, \
getter: function(obj) { \
if (_.isEmpty(obj.text)) { \
return null; \
} \
return obj.text; \
} \
}";
_.forEach(lang_def, function (v, k) {
title_i18n_actions.push(_.format(action_template_str, v, k, 'attr_data.title_i18n.'));
title_i18n_widgets.push(_.format(widget_template_str, 'attr_data.title_i18n.' + k, v));
});
detail_ui = detail_ui.replace('/*{% TITLE_I18N_ACTIONS %}*/', title_i18n_actions.join(','))
.replace('/*{% TITLE_I18N_WIDGETS %},*/', title_i18n_widgets.join(',') + ',');
self.setUi('detail', detail_ui);
// 根据语言定义动态修改option-list.ui.js
var option_ui = self.ui('option-list');
var option_i18n_actions = [];
var option_i18n_widgets = [];
_.forEach(lang_def, function (v, k) {
option_i18n_actions.push(_.format(action_template_str, v, k, 'text_'));
option_i18n_widgets.push(_.format(widget_template_str, 'text_' + k, v));
});
option_ui = option_ui.replace('/*{% TITLE_I18N_ACTIONS %}*/', option_i18n_actions.join(','))
.replace('/*{% TITLE_I18N_WIDGETS %},*/', option_i18n_widgets.join(',') + ',');
self.setUi('option-list', option_ui);
};
try {
var self = this;
var option_list_table = self.uiLoader().getObject("option_list");
if (option_list_table == undefined) return;
var allDataMap = option_list_table.allDataMap();
var ret = GUI.showForm({
title: self.ttr('New Option'),
self: self,
use_core_engine: true,
ui: self.ui('option-list'),
size: '400x400',
buttons: [
self.ttr('Ok') + ':Ok:Ok:Primary',
self.ttr('Cancel') + ':Cancel:Cancel:Normal'
],
include_hidden_items: true,
});
if (_.isEmpty(ret)) return;
var isNameExist = false;
_.forEach(allDataMap, function(item) {
if (ret['name'] == item['name']) {
isNameExist = true;
}
});
if (isNameExist) {
GUI.msgbox({
title: this.ttr("Error"),
text: this.ttr("Option name is exist")
});
return;
}
option_list_table.appendRow(ret);
} catch (e) {
print(e);
}
\ No newline at end of file
try {
this.reloadItem();
} catch(e) {
print(e);
}
/*---ACTION---
ICON: "times.#54698d"
LABEL: "Cancel"
LABEL_ZHCN: "取消"
LABEL_ZHTW: "取消"
ACCEL: ""
TOOLTIP: "Cancel Edit"
TOOLTIP_ZHCN: "取消编辑"
TOOLTIP_ZHTW: "取消編輯"
CHECKED: ""
GROUP: ""
LABEL_EN: ""
LABEL_JP: ""
TOOLTIP_EN: ""
TOOLTIP_JP: ""
STYLE: "button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "return (this.isDetailModified() ) ? 'enable' : 'hide';"
---ACTION---*/
\ No newline at end of file
try {
this.copyItem();
this.uiLoader().setValue('name', "");
} catch (e) {
print(e);
}
/*---ACTION---
ICON: "copy.#54698d"
LABEL: "Copy"
LABEL_ZHCN: "复制"
LABEL_ZHTW: "複製"
ACCEL: ""
TOOLTIP: "Copy Attribute"
TOOLTIP_ZHCN: "复制属性"
TOOLTIP_ZHTW: "複製屬性"
CHECKED: ""
GROUP: ""
LABEL_EN: ""
LABEL_JP: ""
TOOLTIP_EN: ""
TOOLTIP_JP: ""
PERMISSION: "pdm-attr-name-edit"
STYLE: "button_style=icon"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "return (this.isDetailModified() || this.detailUid() == 0) ? 'hide' : 'enable';"
---ACTION---*/
\ No newline at end of file
var del_flag_key = this.config("view_data_set.db_del_flag_key");
try {
if (_.isEmpty(del_flag_key)) {
if ('ok' != TMessageBox.warning(this, this.ttr('Are you sure to delete selected items?'), '', this.ttr('Delete item'), [this.ttr('Sure') + ':ok:ok:warn', this.ttr('Cancel') + ':cancel:cancel:primary'])) {
return;
}
} else {
if ('ok' != TMessageBox.warning(this, this.ttr('Are you sure to move the selected item to the recycling station?'), '', this.ttr('Delete item'), [this.ttr('Sure') + ':ok:ok:warn', this.ttr('Cancel') + ':cancel:cancel:primary'])) {
return;
}
}
this.deleteItems(this.selectedItems());
this.refresh();
this.refreshDetail("");
}
catch (e) {
print(e);
}
/*---ACTION---
ICON: "trash.#54698d"
LABEL: "Delete"
LABEL_ZHCN: "删除"
LABEL_ZHTW: "刪除"
ACCEL: "Delete"
TOOLTIP: "Delete Attribute"
TOOLTIP_ZHCN: "删除属性"
TOOLTIP_ZHTW: "刪除屬性"
CHECKED: ""
GROUP: ""
LABEL_EN: ""
LABEL_JP: ""
TOOLTIP_EN: ""
TOOLTIP_JP: ""
PERMISSION: "pdm-attr-name-delete"
STYLE: "button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "if(this.selectedItems().length > 0){return 'enable'}else{return 'disable'}"
---ACTION---*/
\ No newline at end of file
try {
var self = this;
var option_list_table = self.uiLoader().getObject("option_list");
if (option_list_table == undefined) {
return;
}
if (option_list_table.selectedRowDataMaps().length <= 0) {
return;
}
var allDataMap = option_list_table.allDataMap();
var rowMap = option_list_table.selectedRowDataMaps()[0];
var currentIndex = -1;
_.each(allDataMap, function(item, index) {
if (_.isEqual(rowMap, item)) {
currentIndex = index;
}
})
var ret = GUI.showForm({
title: self.ttr('Edit Option') + ": " + rowMap['name'],
self: self,
use_core_engine: true,
ui: self.ui('option-list'),
size: '400x400',
buttons: [
self.ttr('Ok') + ':Ok:Ok:Primary',
self.ttr('Cancel') + ':Cancel:Cancel:Normal'
],
include_hidden_items: true,
values: rowMap
})
if (_.isEmpty(ret)) {
return;
}
var isNameExist = false;
var iindex;
_.forEach(allDataMap, function(item, index) {
if (currentIndex != index && ret['name'] == item['name']) {
isNameExist = true;
}
});
if (isNameExist) {
GUI.msgbox({
title: this.ttr("Error"),
text: this.ttr("Option Name is existed!")
});
return;
}
option_list_table.setRowDataByPrimaryKey(rowMap["name"], ret);
} catch (e) {
print(e);
}
\ No newline at end of file
try {
this.newItem();
} catch (e) {
print(e);
}
/*---ACTION---
ICON: "plus.#54698d"
LABEL: "New Attribute"
LABEL_ZHCN: "新建属性"
LABEL_ZHTW: "新建屬性"
ACCEL: "Ctrl+N"
TOOLTIP: "New Attribute"
TOOLTIP_ZHCN: "新建属性"
TOOLTIP_ZHTW: "新建屬性"
CHECKED: ""
GROUP: ""
LABEL_EN: ""
LABEL_JP: ""
TOOLTIP_EN: ""
TOOLTIP_JP: ""
PERMISSION: "pdm-attr-name-create"
STYLE: "button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: ""
---ACTION---*/
\ No newline at end of file
try {
this.refresh(false);
} catch(e) {
print(e);
}
/*---ACTION---
ICON: "refresh.#54698d"
LABEL: "Refresh"
LABEL_ZHCN: "刷新"
LABEL_ZHTW: "刷新"
ACCEL: "F5"
TOOLTIP: "Refresh"
TOOLTIP_ZHCN: "刷新"
TOOLTIP_ZHTW: "刷新"
CHECKED: ""
GROUP: ""
LABEL_EN: ""
LABEL_JP: ""
TOOLTIP_EN: ""
TOOLTIP_JP: ""
STYLE: "button_style=icon"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: ""
---ACTION---*/
\ No newline at end of file
try {
this.reloadItem();
} catch(e) {
print(e);
}
/*---ACTION---
ICON: "refresh.#54698d"
LABEL: "Refresh"
LABEL_ZHCN: "刷新"
LABEL_ZHTW: "刷新"
ACCEL: ""
TOOLTIP: "Reload data from database"
TOOLTIP_ZHCN: "重载数据"
TOOLTIP_ZHTW: "重載數據"
CHECKED: ""
GROUP: ""
LABEL_EN: ""
LABEL_JP: ""
TOOLTIP_EN: ""
TOOLTIP_JP: ""
STYLE: "button_style=icon"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "return (this.isDetailModified() || this.detailUid() == 0) ? 'hide' : 'enable';"
---ACTION---*/
\ No newline at end of file
var self = this;
var option_list_table = self.uiLoader().getObject("option_list");
if (option_list_table == undefined) {
return;
}
if (option_list_table.selectedRowDataMaps().length <= 0) {
return;
}
if ('ok' != TMessageBox.warning(self, self.ttr('Are you sure to remove selected items?'), '', self.ttr('Delete item'), [self.ttr('Sure') + ':ok:ok:warn', self.ttr('Cancel') + ':cancel:cancel:primary'])) {
return;
}
option_list_table.removeSelectedRows();
var ans = TMessageBox.question(this, this.ttr("Are you sure to restore selected items?"), '', this.ttr('Ask'));
if (ans != 'Yes')
{
return;
}
var query = new TSqlQueryV2(T_SQLCNT_POOL.getSqlDatabase());
query.begin();
try {
var updater = new TSqlUpdaterV2;
updater.setTable("pdm_attrname");
updater.setWhere('id', this.selectedItems());
updater.setData({del_flag: 0});
query.updateRow(updater);
var error = query.lastError();
if (error.isValid()) {
throw error;
}
query.commit();
this.alertOk(this.ttr("Restore data Success!"));
this.refresh(false);
this.refreshDetail("");
} catch (e) {
query.rollback();
this.alertError(this.ttr("Restore Data Failed"));
print(e);
}
/*---ACTION---
ICON: "mail-reply"
LABEL: "Restore"
LABEL_ZHCN: "还原"
LABEL_ZHTW: "還原"
ACCEL: "Ctrl+R"
TOOLTIP: "Restore Attribute"
TOOLTIP_ZHCN: "还原属性"
TOOLTIP_ZHTW: "還原屬性"
CHECKED: ""
GROUP: ""
LABEL_EN: ""
LABEL_JP: ""
TOOLTIP_EN: ""
TOOLTIP_JP: ""
PERMISSION: "pdm-attr-name-edit"
STYLE: "button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "if(_.isEmpty(this.config('view.data_set.db_del_flag_key')) == false){return 'hide'} else if( this.selectedItems().length > 0){return 'enable'}else{return 'disable'}"
---ACTION---*/
\ No newline at end of file
try {
this.saveItem();
} catch (e) {
print(e);
}
/*---ACTION---
ICON: "save.#54698d"
LABEL: "Save"
LABEL_ZHCN: "保存"
LABEL_ZHTW: "保存"
ACCEL: "Ctrl+S"
TOOLTIP: "Save Attribute"
TOOLTIP_ZHCN: "保存属性"
TOOLTIP_ZHTW: "保存屬性"
PERMISSION: "pdm-attr-name-edit"
CHECKED: ""
GROUP: ""
STYLE: "button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "return (this.isDetailModified() ) ? 'enable' : 'disable';"
---ACTION---*/
\ No newline at end of file
var query = new TSqlQueryV2(T_SQLCNT_POOL.getSqlDatabase());
var self = this;
try {
var selector = new TSqlSelectorV2;
selector.setTable("pdm_attrname");
selector.setField(["id", "name", "title", "storage_flag"]);
selector.setWhere("del_flag = 0 OR del_flag IS NULL");
var error = new TError;
var data = this.runSqlQueryOnThreadSync('TOPSQLTHREAD_SELECT_ARRAYMAP', selector, error);
if (error.isValid()) {
throw error.text();
}
var flagTrueList = []; //storage_flag = 1
var flagFalseList = []; //storage_flag = 0 or null
_.forEach(data, function(item){
var storage_flag = item["storage_flag"];
if (storage_flag == 1) {
flagTrueList.push(item);
} else {
flagFalseList.push(item);
}
});
var dialog = new TTableChooserDialog(self);
dialog.setTitle(self.ttr("Set primary attrname"));
dialog.setButtons([self.ttr('Ok') + ':Ok:Ok:Primary', self.ttr('Cancel') + ':Cancel:Cancel:ERROR']);
dialog.setIcon("pdm-setting.546998d");
dialog.setRepetitionEnabled(false);
dialog.setPrimaryKey('id');
dialog.setSearchKeys(['name', 'title']);
dialog.setHeaderItem(
[
{
},
{
name: 'name',
display: self.ttr('Attrname'),
displayRole: '$name',
resizeMode: 'Stretch',
sorting_enabled: 1,
},
{
name: 'title',
display: self.ttr('Title'),
displayRole: '$title',
resizeMode: 'Stretch',
sorting_enabled: 0
}
]
);
dialog.setDataKeyList(['id', 'name', 'title', 'storage_flag']);
dialog.loadAllData(flagFalseList);
dialog.loadSelectedData(flagTrueList);
var ret = dialog.run();
if (_.isEmpty(ret)) {
return;
}
var newFlagFalseList = dialog.tableView().allDataMap();
var newFlagTrueList = dialog.selectedTableView().allDataMap();
var flagTrueIds = [];
var flagFalseIds = [];
_.forEach(newFlagTrueList, function(item) {
flagTrueIds.push(item['id']);
});
_.forEach(newFlagFalseList, function(item) {
flagFalseIds.push(item['id']);
});
var updater = new TSqlUpdaterV2;
updater.setTable('pdm_attrname');
var updateTrueMap = {};
updateTrueMap["storage_flag"] = 1;
updater.setField(["storage_flag"]);
updater.setWhere("id", flagTrueIds);
updater.setData(updateTrueMap);
query.updateRow(updater);
var error = query.lastError();
if (error.isValid()) {
throw error;
}
var updateFalseMap = {};
updateFalseMap["storage_flag"] = 0;
updater.setField(["storage_flag"]);
updater.setWhere("id", flagFalseIds);
updater.setData(updateFalseMap);
query.updateRow(updater);
var error = query.lastError();
if (error.isValid()) {
throw error;
}
query.commit();
} catch (e) {
query.rollback();
this.alertError(this.ttr('Error!'), e);
print(e);
}
/*---ACTION---
ICON: "pdm-setting.#54698d"
LABEL: "Set Primary Attributes"
LABEL_ZHCN: "设置关键属性"
LABEL_ZHTW: "設置關鍵屬性"
ACCEL: ""
TOOLTIP: "Set Primary Attributes"
TOOLTIP_ZHCN: "设置关键属性"
TOOLTIP_ZHTW: "設置關鍵屬性"
CHECKED: ""
GROUP: ""
LABEL_EN: ""
LABEL_JP: ""
TOOLTIP_EN: ""
TOOLTIP_JP: ""
PERMISSION: "pdm-attr-name-edit"
STYLE: "button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: ""
---ACTION---*/
\ No newline at end of file
try {
var checked = arguments[0];
var cfg = this.config();
if (checked) {
var dbFilter = {};
dbFilter['del_flag'] = '1';
_.set(cfg, 'view.data_set.db_filter', dbFilter);
_.set(cfg, 'view.data_set.db_del_flag_key', "");
} else {
_.set(cfg, 'view.data_set.db_filter', {});
_.set(cfg, 'view.data_set.db_del_flag_key', "del_flag");
}
this.setConfig(cfg);
this.viewConfChanged();
this.refresh(false);
} catch(e) {
print(e);
}
/*---ACTION---
ICON: "trash-o"
LABEL: "Recycle Bin"
LABEL_ZHCN: "回收站"
LABEL_ZHTW: "回收站"
ACCEL: ""
TOOLTIP: "Recycle Bin"
TOOLTIP_ZHCN: "回收站"
TOOLTIP_ZHTW: "回收站"
CHECKED: "false"
GROUP: ""
LABEL_EN: ""
LABEL_JP: ""
TOOLTIP_EN: ""
TOOLTIP_JP: ""
PERMISSION: ""
STYLE: "button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: ""
---ACTION---*/
\ No newline at end of file
"Delete item": {en: "Delete item", zhcn: "删除条目", zhtw: ""}
"Sure": {en: "Confirmed", zhcn: "确认", zhtw: ""}
" already exists in the recycle bin!": {en: " already exists in the recycle bin!",zhcn: " 已在回收站中存在!",zhtw: " 已在回收站中存在!"}
" already exists!": {en: " already exists!",zhcn: " 已存在!",zhtw: " 已存在!"}
" can only contain [A-Za-z0-9_]!": {en: " can only contain [A-Za-z0-9_]!",zhcn: " 只能包含数字字母下划线!",zhtw: " 只能包含數字字母下劃線!"}
"Are you sure to remove selected items?": {en: "Are you sure to remove selected items?",zhcn: "确定要移除所选项吗?",zhtw: "確定要移除所選項嗎?"}
"Are you sure to move the selected item to the recycling station?": {en:"Are you sure to move the selected item to the recycle bin?", zhcn: "确定要将选中的条目移至回收站吗?", zhtw: "確定要將選中的條目移至回收站嗎?"}
"Arrow bottom": {en: "Move bottom",zhcn: "置底",zhtw: "置底"}
"Arrow down": {en: "Move down",zhcn: "下移",zhtw: "下移"}
"Arrow top": {en: "Move top",zhcn: "置顶",zhtw: "置頂"}
"Arrow up": {en: "Move up",zhcn: "上移",zhtw: "上移"}
"Attribute Type": {en: "Attribute Type",zhcn: "属性类型",zhtw: "屬性類型"}
"Category": {en: "Category",zhcn: "分类",zhtw: "分類"}
"Common Query Attributes": {en: "Common Query Attributes",zhcn: "常用查询",zhtw: "常用查詢"}
"Data": {en: "Data",zhcn: "数据",zhtw: "數據"}
"Data Type": {en: "Data Type",zhcn: "数据类型",zhtw: "數據類型"}
"Department": {en: "Department",zhcn: "部门",zhtw: "部門"}
"Used Department": {en: "Used Department",zhcn: "使用部门",zhtw: "使用部門"}
"Edit Option": {en: "Edit Option",zhcn: "编辑选项",zhtw: "編輯選項"}
"Job Attr-%1": {en: "Job Attr-%1",zhcn: "料号属性-%1",zhtw: "料號屬性-%1"}
"Name": {en: "Name",zhcn: "名称",zhtw: "名稱"}
"Navigation": {en: "Navigation",zhcn: "分类导航",zhtw: "分類導航"}
"New Attr": {en: "New Attr",zhcn: "新建属性",zhtw: "新建屬性"}
"New Option": {en: "New Option",zhcn: "新建选项",zhtw: "新建選項"}
"Option List": {en: "Option List",zhcn: "选项列表",zhtw: "選項列表"}
"Remove Option": {en: "Remove Option",zhcn: "移除选项",zhtw: "移除選項"}
"Saving data failed!": {en: "Saving data failed!",zhcn: "保存数据失败!",zhtw: "保存數據失敗!"}
"Tag": {en: "Tag",zhcn: "标签",zhtw: "標籤"}
"Text": {en: "Text",zhcn: "标题",zhtw: "標題"}
"Title": {en: "Title",zhcn: "标题",zhtw: "標題"}
"Trash": {en: "Trash",zhcn: "回收站",zhtw: "回收站"}
"UI Cfg": {en: "UI Cfg",zhcn: "界面配置",zhtw: "界面配置"}
"Units": {en: "Units",zhcn: "单位",zhtw: "單位"}
"can not be null": {en: "can not be null",zhcn: "不为空",zhtw: "不為空"}
"Attribute-%1": {en: "Attribute-%1",zhcn: "属性-%1",zhtw: "屬性-%1"}
"Set data failed!": {en: "Set data failed!",zhcn: "设置数据失败!",zhtw: "設置數據失敗!"}
"Set data success!": {en: "Set data success!",zhcn: "设置数据成功!",zhtw: "設置數據成功!"}
"Defalt Yes/No": {en: "Default Yes/No",zhcn: "默认 Yes/No",zhtw: "默認 Yes/No"}
"Set flag success!": {en: "Set flag success!",zhcn: "设置关键属性成功!",zhtw: "設置關鍵屬性成功!"}
"Set flag failed!": {en: "Set flag failed!",zhcn: "设置关键属性失败!",zhtw: "設置關鍵屬性失敗!"}
"Set primary attrname": {en: "Set primary attrname",zhcn: "设置关键属性",zhtw: "設置關鍵屬性"}
"Attrname": {en: "Attrname",zhcn: "属性",zhtw: "屬性"}
"Are you sure to restore selected items?": {en: "Are you sure to restore selected items?",zhcn: "确定要还原所选项吗?",zhtw: "確定要還遠所選項嗎?"}
"Restore data success!": {en: "Restore data success!", zhcn: "还原数据成功!", zhtw: "還原數據成功!"}
"Restore data failed!": {en: "Restore data failed!", zhcn: "还原数据失败!", zhtw: "還原數據失敗!"}
"Add Translation": { en: "Add Translation", zhcn: "添加翻译", zhtw: "添加翻譯" }
"Option Name is existed!": { en: "Option Name is existed!", zhcn: "选项名称已存在!", zhtw: "選項名稱已存在!"}
# 模块标题
sys_title: "Attribute Name List"
sys_title_en: "Attribute Name List"
sys_title_zhcn: "属性名称列表"
sys_title_zhtw: "屬性名稱列表"
# 模块图标
sys_icon: "pdm-check_item"
# 模块对应的插件DLL名称
sys_plugin: "toptemplateclassplugin"
# 模块对应的类名
sys_class: "TopTemplateClass4"
# 打开模块的权限
sys_open_right: "pdm-attr-name-read"
# 当关闭窗口时,如果提示是否保存,保存调用的action
sys_save_action: ""
# 该模块用到的枚举列表
sys_enum_list: ["pdm-attrname-attrtype", "pdm-attrname-datatype", "pdm-attrname-department", "pdm-attrname-attrcategory"]
# 该模块用到的除了Action之外的权限列表
sys_permission_list: []
#详情页面的初始大小
detail.perfect_size.width: 600
#导航栏初宽度
navi.perfect_size.width:200
navi.min_size.width:150
# 新建时是否全屏
detail.create.fullscreen: false
# 导航栏配置
navi: {
min_width: 150,
is_expanded: true,
is_checkable: true,
categories: [
{
name: "category",
text: "Category",
icon: "",
VISIBLE: 1,
EXPAND: 1,
checked: 0,
data: "category",
children: [],
enum_children: "pdm-attrname-attrcategory",
enum_checked:[]
},
{
name: "type",
text: "Attribute Type",
icon: "",
VISIBLE: 1,
EXPAND: 1,
checked: 0,
data: "type",
children: [],
enum_children: "pdm-attrname-attrtype",
enum_checked:[]
},
{
name: "department",
text: "Used Department",
icon: "",
VISIBLE: 1,
EXPAND: 1,
checked: 0,
data: "department",
children: [],
enum_children: "pdm-attrname-department",
enum_checked:[]
}
]
}
# 显示相关配置
view {
data_keys: ["id", "title", "attr_data.store_table", "ui_cfg", "option_list", "tags", "del_flag"],
primary_key: "id",
horizontal_header: [
{
"name": "name",
"display": "Name",
"displayRole": "$name",
"size": 100,
"search": "string"
},
{
"name": "title",
"display": "Title",
"displayRole": "$title",
"size": 100,
"search": "string"
}
{
"name": "units",
"display": "Units",
"displayRole": "$units",
"size": 100
},
{
"name": "category",
"display": "Category",
"displayRole": "$category.text",
"size": 100,
"format": "enum(pdm-attrname-attrcategory)",
"field_format": "array"
},
{
"name": "type",
"display": "Attribute Type",
"displayRole": "$type.text",
"size": 100,
"format": "enum(pdm-attrname-attrtype)",
"field_format": "array"
},
{
"name": "data_type",
"display": "Data Type",
"displayRole": "$data_type.text",
"size": 100,
"format": "enum(pdm-attrname-datatype)"
},
{
"name": "department",
"display": "Department",
"displayRole": "$department.text",
"size": 100,
"format": "enum(pdm-attrname-department)",
"field_format": "array"
},
{
"name": "remark",
"display": "Remark",
"displayRole": "$remark",
"size": 100,
"search": "string"
}
],
data_set {
db_table_name: "pdm_attrname",
db_sql: "",
# 删除标记,若为空表示做物理删除
db_del_flag_key: "del_flag"
# 过滤项
db_filter {
}
}
}
\ No newline at end of file
function func(self) {
return [
{
name: 'scrollarea',
type: 'ScrollArea',
property:
{
widget_resizable: true,
frame_shape: 'QFrame::NoFrame'
},
pack: {},
child:
{
name: 'vlayout',
type: 'VBoxLayout',
property:
{
margin: 0, spacing: 10
},
pack: {},
child: [
{
name: 'flayout',
type: 'FormGridLayout',
property:
{
label_alignment: 'AlignRight', margin: 20, vertical_spacing: 10, horizontal_spacing: 20
},
pack: {},
child: [
{
name: 'name',
type: 'LineEdit',
property: {},
title: self.ttr("Name"),
pack:
{
label: self.ttr("Name")
},
validate: function (obj, val, title, moment, self) {
if (val.trim() == '') {
return [title + self.ttr('can not be null'), 'Error'];
}
return;
},
initCallback: function (obj, self) {
obj.setFocus();
}
},
{
name: "text_wgt",
type: "Widget",
pack: { label: self.ttr("Text") },
child: {
name: 'text_layout',
type: 'HBoxLayout',
property: {
margin: 0,
spacing: 10
},
child: [
{
name: 'text',
type: 'LineEdit',
title: self.ttr('Text'),
property: {},
validate: function (obj, val, title, moment, self) {
return;
}
},
{
type: 'PushButton',
property: { text: self.ttr('Add Translation') },
child: [
{
type: 'Menu',
child: [
/*{% TITLE_I18N_ACTIONS %}*/
]
}
]
}
]
},
state: function (obj, self) {
var option_list_table = self.uiLoader().getObject("option_list");
if (option_list_table == undefined || option_list_table === null) return;
return option_list_table.isColumnVisible("text") ? "SHOW" : "HIDE";
}
},
/*{% TITLE_I18N_WIDGETS %},*/
{
name: 'icon',
type: 'IconSelector',
title: self.ttr('Icon'),
property: {},
pack:
{
label: self.ttr('Icon')
},
},
{
name: 'data',
title: self.ttr('Data'),
type: 'TextEdit',
property: { min_row_count: 1, max_row_count: 30 },
pack:
{
label: self.ttr('Data')
},
setter: function (obj, value, self) {
obj.setPlainText(value);
},
getter: function (obj, self) {
return obj.plainText
},
},
{
name: 'rmk',
title: self.ttr('Remark'),
type: 'TextEdit',
property: { min_row_count: 1, max_row_count: 30 },
pack:
{
label: self.ttr('Remark')
},
setter: function (obj, value, self) {
obj.setPlainText(value);
},
getter: function (obj, self) {
return obj.plainText
},
},
{
name: 'stretcher',
type: 'Widget',
property: { size_policy: 'Qt::Expanding' }
}
]
}
]
}
}
]
;
}
\ No newline at end of file
# 表格的右键菜单
"TABLEVIEW_POPUP": [
{"type":"menuitem","action":"new"},
{"type":"separator"},
{"type":"menuitem","action":"delete"},
{"type":"menuitem","action":"restore"},
{"type":"separator"},
{"type":"menuitem","action":"refresh"}
]
# 工具栏
"MAIN_TOOLBAR": [
{"type":"spacing", "size":10},
{"type":"toolitem","action":"new"},
{"type":"separator"},
{"type":"toolitem","action":"trash"},
{"type":"toolitem","action":"c1"},
{"type":"toolitem","action":"c2"},
{"type":"toolitem","action":"c3"},
{"type":"toolitem","action":"c4"},
{"type":"toolitem","action":"c5"},
{"type":"stretcher"},
{"type":"searchentry","name":"SEARCH_ENTRY"},
{"type":"toolitem", action:"refresh"},
{type:"menu", text:"", icon:"ellipsis-v",
child: [
{"type":"menuitem","action":"set_key_attr"},
]},
]
# 底部工具栏
"BOTTOM_TOOLBAR" : [
{"type":"stretcher"},
{"type":"pagetool","name":"PAGE_TOOL"}
]
# 详细信息工具栏
"DETAIL_TOOLBAR": [
{"type":"toolitem","action":"save_detail"},
{"type":"stretcher"},
{"type":"toolitem","action":"copy_detail"},
{"type":"toolitem","action":"cancel_detail"},
{"type":"toolitem","action":"refresh_detail"}
]
this.afterViewInit = function () {
var self = this;
var stackup_viewer = self.uiLoader().getObject('stackup');
stackup_viewer.setDrawSetting(self.config("stackup.draw_setting"));
var selector = new TSqlSelectorV2;
selector.setTable("pdm_stkmatlib");
selector.setWhere("class = 'Core'");
selector.setField("DISTINCT family");
selector.setOrder(["family ASC"]);
var cores = self.runSqlQueryOnThreadSync("TOPSQLTHREAD_SELECT_ARRAYMAP", selector);
cores = _.map(cores, function(item) { return { name: item.family, text: item.family } } );
self.naviView().getObject('attr_data.core_family').setData('item_list', cores);
selector.clear();
selector.setTable("pdm_stkmatlib");
selector.setWhere("class = 'Prepreg'");
selector.setField("DISTINCT family");
selector.setOrder(["family ASC"]);
var pps = self.runSqlQueryOnThreadSync("TOPSQLTHREAD_SELECT_ARRAYMAP", selector);
pps = _.map(pps, function(item) { return { name: item.family, text: item.family } } );
self.naviView().getObject('attr_data.pp_family').setData('item_list', pps);
}
this.onNaviReset = function () {
var naviUi = this.naviLoader();
naviUi.clearValues();
this.refresh();
}
\ No newline at end of file
try {
this.reloadItem();
} catch(e) {
print(e);
}
/*---ACTION---
ICON: "cancel"
LABEL: "Cancel"
LABEL_ZHCN: "取消"
LABEL_ZHTW: "取消"
ACCEL: ""
TOOLTIP: "Cancel the action"
TOOLTIP_ZHCN: "取消动作"
TOOLTIP_ZHTW: "取消動作"
CHECKED: ""
GROUP: ""
STYLE: "button_style=text"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "return (this.isDetailModified()) ? 'enable' : 'hide';"
---ACTION---*/
\ No newline at end of file
try {
var ans = TMessageBox.question(this, this.ttr("Do you want to delete the selected item?"), '', '',
[this.ttr('Delete')+':Yes:Yes:Error', this.ttr('Cancel')+':Cancel:Cancel:Normal']);
if (ans != 'Yes') {
return;
}
this.deleteItems(this.selectedItems());
} catch (e) {
print(e);
}
/*---ACTION---
ICON: "times-circle"
LABEL: "Delete"
LABEL_ZHCN: "刪除"
LABEL_ZHTW: "刪除"
ACCEL: "Delete"
TOOLTIP: "Delete"
TOOLTIP_ZHCN: "删除"
TOOLTIP_ZHTW: "刪除"
PERMISSION: ""
CHECKED: ""
GROUP: ""
STYLE: "size=small button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "if(this.selectedItems().length > 0 && !this.isDetailModified()){return 'enable'}else{return 'disable'}"
---ACTION---*/
\ No newline at end of file
try {
this.newItem();
} catch (e) {
print(e);
}
/*---ACTION---
ICON: "plus"
LABEL: "New"
LABEL_ZHCN: "新建"
LABEL_ZHTW: "新建"
ACCEL: ""
TOOLTIP: "Add new item"
TOOLTIP_ZHCN: "新建条目"
TOOLTIP_ZHTW: "新建條目"
PERMISSION: "sys-user-create"
CHECKED: ""
GROUP: ""
STYLE: "button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "return (!this.isDetailModified()) ? 'enable' : 'disable';"
---ACTION---*/
\ No newline at end of file
try {
this.refresh();
} catch (e) {
print(e);
}
/*---ACTION---
ICON: "refresh"
LABEL: "Refresh"
LABEL_ZHCN: "刷新"
LABEL_ZHTW: "刷新"
ACCEL: "F5"
TOOLTIP: "Refresh"
TOOLTIP_ZHCN: "刷新"
TOOLTIP_ZHTW: "刷新"
CHECKED: ""
GROUP: ""
STYLE: "size=small button_style=icon"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: ""
---ACTION---*/
\ No newline at end of file
try {
this.reloadItem();
} catch(e) {
print(e);
}
/*---ACTION---
ICON: "refresh"
LABEL: "Refresh"
LABEL_ZHCN: "刷新"
LABEL_ZHTW: "刷新"
ACCEL: ""
TOOLTIP: "Reload data from database"
TOOLTIP_ZHCN: "重新从数据库加载数据"
TOOLTIP_ZHTW: "重新從數據庫加載數據"
CHECKED: ""
GROUP: ""
STYLE: "button_style=icon"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "return this.isDetailModified() ? 'hide' : 'enable';"
---ACTION---*/
\ No newline at end of file
try {
this.saveItem();
} catch(e) {
print(e);
}
/*---ACTION---
ICON: "save"
LABEL: "Save"
LABEL_ZHCN: "保存"
LABEL_ZHTW: "保存"
ACCEL: "Ctrl+S"
TOOLTIP: "Save"
TOOLTIP_ZHCN: "保存"
TOOLTIP_ZHTW: "保存"
PERMISSION: ""
CHECKED: ""
GROUP: ""
STYLE: " button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "return (this.isDetailModified()) ? 'enable' : 'disable';"
---ACTION---*/
\ No newline at end of file
function func(self) {
var ui = {
type: 'TabWidget',
child: [
{
type: 'VBoxLayout',
pack: { label: self.ttr('Basic Info') },
child: [
{
type: 'FormGridLayout',
child: [
{
name: 'attr_data.name',
type: 'LineEdit',
pack: { label: self.ttr('Name') }
},
{
name: 'layer_count',
type: 'LineEdit',
pack: { label: self.ttr('Layer Count') },
property: { readonly: true }
},
{
name: 'min_thk',
type: 'LineEdit',
pack: { label: self.ttr('Min Thk') },
property: { readonly: true }
},
{
name: 'max_thk',
type: 'LineEdit',
pack: { label: self.ttr('Max Thk') },
property: { readonly: true }
},
{
name: 'attr_data.core_family',
type: 'LineEdit',
pack: { label: self.ttr('Core Family') },
property: { readonly: true }
},
{
name: 'attr_data.pp_family',
type: 'LineEdit',
pack: { label: self.ttr('PP Family') },
property: { readonly: true }
},
{
name: 'stackup_code',
type: 'LineEdit',
pack: { label: self.ttr('Structure') },
property: { readonly: true }
},
{
name: 'attr_data.remark',
type: 'PlainTextEdit',
pack: { label: self.ttr('Remark') }
}
]
},
{
type: 'Stretch'
}
]
},
{
type: 'VBoxLayout',
pack: { label: self.ttr('Stackup') },
property: { margin: 0, spacing: 0 },
child: [
{
name: 'stackup',
type: 'topikm6-stackup-viewer-plugin.STACKUPVIEWER',
setter: function(obj, value) {
obj.setStackupData(JSON.parse(value));
}
},
{
type: 'Stretch'
}
]
}
]
};
return ui;
}
\ No newline at end of file
"Layer Count": { zhcn: "层数" }
"Min Thk": { zhcn: "最小板厚" }
"Max Thk": { zhcn: "最大板厚" }
"Core Family": { zhcn: "芯板材料" }
"PP Family": { zhcn: "PP材料" }
"Structure": { zhcn: "结构" }
"Basic Info": { zhcn: "基本信息" }
"Stackup": { zhcn: "叠构图" }
\ No newline at end of file
# 模块标题
sys_title: "Stackup Template Lib"
sys_title_en: "Stackup Template Lib"
sys_title_zhcn: "叠层模板库"
sys_title_zhtw: "疊層模板庫"
# 模块图标(普通图标在font awesome中找 http://fontawesome.io/icons/)
sys_icon: "pdm-job-stackup"
# 模块对应的插件DLL名称
sys_plugin: "toptemplateclassplugin"
# 模块对应的类名
sys_class: "TopTemplateClass4"
# 打开模块的权限
sys_open_right: ""
# 当关闭窗口时,如果提示是否保存,保存调用的action
sys_save_action: ""
# 该模块用到的枚举列表
sys_enum_list: []
# 该模块用到的除了Action之外的权限列表
sys_permission_list: []
navi {
__type__: "UiLoader"
is_expanded: true
}
# 主表格
view {
# 数据项, 默认包含表头中配置的数据项
data_keys: [ "id", "stackup", "attr_data.remark" ]
# 主键
primary_key: "id"
# 水平表头
horizontal_header: [
{
"name": "attr_data.name",
"display": "Name",
"displayRole": "$attr_data.name",
"resizeMode": "ResizeToContents",
"search": "json"
},
{
"name": "layer_count",
"display": "Layer Count",
"displayRole": "$layer_count",
"resizeMode": "ResizeToContents"
},
{
"name": "min_thk",
"display": "Min Thk",
"displayRole": "$min_thk",
"resizeMode": "ResizeToContents"
},
{
"name": "max_thk",
"display": "Max Thk",
"displayRole": "$max_thk",
"resizeMode": "ResizeToContents"
},
{
"name": "attr_data.core_family",
"display": "Core Family",
"displayRole": "$attr_data.core_family",
"resizeMode": "ResizeToContents",
"search": "json"
},
{
"name": "attr_data.pp_family",
"display": "PP Family",
"displayRole": "$attr_data.pp_family",
"resizeMode": "ResizeToContents",
"search": "json"
},
{
"name": "stackup_code",
"display": "Structure",
"displayRole": "$stackup_code",
"resizeMode": "ResizeToContents"
}
]
# 默认排序列
sort_by: "id DESC"
# 数据集
data_set {
# 数据库表名
db_table_name: "pdm_stackstructlib"
# 删除标记
# 若为空表示做物理删除
db_del_flag_key: ""
# 过滤项
db_filter {
}
}
}
# 叠构图配置
stackup.draw_setting: {
# 字体设置
"font_family": "Microsoft YaHei"
# 软硬结合板中为了表示辅材的形状, 用以表示不同的层形状
"layer_shape_x" : ["-50","-10","0","50","150","230","330","380","550"],
# 层标题
"layer_title" : [" "," ","Layer","Drill","Layer Type","Material","RC", "Thickness"],
# 层高
"layer_height": "20",
# 最小长度
# 若是HDI板,钻孔增多时,会自动加长
"layer_base_lenth": "550",
# 层上的文字定义
# text: 文字内容
# DISP. 精度调整后的值
# MAT. 显示材料相关的属性
# start_zone: 文字的起始区域,layer_shape_x中的第N个区域开始(从0开始)
# offset: 相对于区域的起始点的偏移值,单位:像素
# color: 文字颜色, 若不配置颜色,会自动根据背景色算出合适的颜色
# size: 文字大小,单位:像素
# exclude_display_type: 哪种图形类型显示, 此参数命名错误,应是include_display_type,
# expand_only: 只有在展开时才显示
"layer_text" : [
{"anchor":"center","text":"layer_name","start_zone":"2","offset":"3","color":"black","exclude_display_type" : ["2","1"]},
{"anchor":"center","text":"layer_type","start_zone":"4","offset":"3","color":"black","exclude_display_type" : ["1"]},
{"anchor":"center","text":"MAT.description","start_zone":"5","offset":"10","color":"black", "size": 12, "exclude_display_type" : ["1"]},
{"anchor":"center","text":"MAT.resin_content","start_zone":"6","offset":"10","color":"black", "size": 12, "exclude_display_type" : ["1"]},
{"anchor":"center","text":"DISP.final_thk","start_zone":"7","offset":"5","color":"black","exclude_display_type" : ["1"]}
],
# 钻孔形状宽度
"drl_shape_width" : "40",
# 钻孔的间距
"drl_shape_spacing" : "0",
# 镭射钻孔形状描述
"laser_shape" : ["2","10","13","5"],
"laser_color" : "#D8934C",
"laser_filler_color" : {
"" : "white",
"None" : "white",
"SM Plugin" : "#0F8E0D",
"Resin Plugin" : "#D8C6AA",
"Via Filling" : "#D8934C",
"Resin Plugin + Capping" : "#D8987E"
},
"depth_laser_shape" : ["2","10","13","5"],
"depth_laser_color" : "#D8934C",
"depth_laser_filler_color" : {
"" : "white",
"None" : "white",
"SM Plugin" : "#0F8E0D",
"Resin Plugin" : "#D8C6AA",
"Via Filling" : "#D8934C",
"Resin Plugin + Capping" : "#D8987E"
},
"uv_laser_shape" : ["2","10","13","5"],
"uv_laser_color" : "#D8934C",
"uv_laser_filler_color" : {
"" : "white",
"None" : "white",
"SM Plugin" : "#0F8E0D",
"Resin Plugin" : "#D8C6AA",
"Via Filling" : "#D8934C",
"Resin Plugin + Capping" : "#D8987E"
},
"ivh_shape" : ["8"],
"ivh_color" : "#D8934C",
"pth_shape" : ["3","10","7"],
"pth_color" : "#D8934C",
"npth_shape" : ["8"],
"npth_color" : "white",
"mech_blind_shape": ["3","10","7"],
"mech_blind_color": "#D8934C",
"depth_milling_shape": ["16"],
"depth_milling_color": "white",
"zone_bgcolor" : "white",
"zone_line_color" : "white",
"zone_line_width" : "0",
"zone_header_margin" : "10",
"zone_header_bgcolor" : "#76AB43",
"zone_header_height" : "40",
"zone_bottom_margin" : "10",
"zone_bottom_bgcolor" : "#C8C8C8",
"zone_bottom_height" : "80",
"zone_main_top_margin" : "10",
"zone_main_about_margin" : "0",
"zone_main_bot_margin" : "10",
"zone_header_text": [
{"anchor":"center","color":"white","offset_y":-30,"text":"zone_name","offset_x":0,"font":"Sans 10 Bold"},
{"anchor":"center","color":"white","offset_y":-15,"text":"zone_title","offset_x":0,"font":"Sans Bold 12"},
{"anchor":"center","color":"white","offset_y":0,"text":"zone_type","offset_x":0,"font":"Sans 10 Bold"},
{"anchor":"center","color":"white","offset_y":15,"text":"remark","dist_y":15,"offset_x":0,"font":"Sans Bold 10"}
]
}
function func(self) {
return {
type: 'FormGridLayout',
child: [
{
name: 'layer_count',
type: 'IntLineEdit',
pack: { label: self.ttr('Layer Count') }
},
{
name: 'attr_data.core_family',
type: 'ComboBox',
pack: { label: self.ttr('Core Family') },
property: {
searchable: true,
user_data: { field_name: "attr_data->>'core_family'", operator: 'LIKE' }
}
},
{
name: 'attr_data.pp_family',
type: 'ComboBox',
pack: { label: self.ttr('PP Family') },
property: {
searchable: true,
user_data: { field_name: "attr_data->>'pp_family'", operator: 'LIKE' }
}
},
{
name: 'stackup_code',
type: 'LineEdit',
pack: { label: self.ttr('Structure') },
property: {
user_data: { operator: 'LIKE' }
}
}
]
};
}
# 工具栏
"MAIN_TOOLBAR": [
{"type":"stretcher"},
{"type":"searchentry","name":"SEARCH_ENTRY"}
{"type":"toolitem","action":"refresh"}
]
# 表格的右键菜单
"TABLEVIEW_POPUP": [
{"type":"menuitem","action":"delete"},
{"type":"separator"},
{"type":"menuitem","action":"refresh"}
]
# 底部工具栏
"BOTTOM_TOOLBAR" : [
{"type":"stretcher"},
{"type":"pagetool","name":"PAGE_TOOL"}
]
# 详细信息工具栏
"DETAIL_TOOLBAR": [
{"type":"toolitem","action":"save_detail"},
{"type":"stretcher"},
{"type":"toolitem","action":"cancel_detail"},
{"type":"toolitem","action":"refresh_detail"}
]
\ No newline at end of file
//获取总表数据
this.getTotalData = function (conditionMap) {
var treeName = "test";
var view = {
"data_keys": ["zone", "kpi_dept", "past_due", "past_due.color"],
"horizontal_header": [
{
"name": "zone",
"display": "Zone",
"displayRole": "$zone"
},
{
"name": "kpi_dept",
"display": "Kpi dept",
"displayRole": "$kpi_dept"
},
{
"name": "past_due",
"display": "Past due",
"displayRole": "$past_due",
"backgroundRole": "$past_due.color"
}
]
}
var treeData = [];
for (var i = 0; i < 5; i++) {
var data = {
"id": 1,
"zone": "Z0",
"kpi_dept": "Unreleased",
"past_due": "14",
"past_due.color": "pink",
"CHILDREN": [
{
"zone": "Z00",
"kpi_dept": "release",
"past_due": "14",
"past_due.color": "#FF99CC"
},
{
"zone": "Z01",
"kpi_dept": "release",
"past_due": "14",
"past_due.color": "#FF99CC"
},
{
"zone": "Z02",
"kpi_dept": "release",
"past_due": "14",
"past_due.color": "#FF99CC"
}
]
};
treeData.push(data)
}
var totalData = {};
totalData['name'] = treeName;
totalData['view'] = view;
totalData['data'] = treeData;
return totalData;
}
//获取分表数据
this.getSubData = function (cellData) {
var detailData = this.getTotalData(cellData);
detailData['name'] = APP.getToday() + '_' +_.random(0, 100);
return detailData;
}
try {
this.collapseAll();
} catch (e) {
print(_.toString(e));
}
/*---ACTION---
ICON: "minus-square-o"
LABEL: "Collapse All"
LABEL_ZHCN: "折叠全部"
LABEL_ZHTW: "折疊全部"
ACCEL: ""
TOOLTIP: "Collapse All"
TOOLTIP_ZHCN: "折叠全部"
TOOLTIP_ZHTW: "折疊全部"
PERMISSION: ""
CHECKED: ""
GROUP: ""
STYLE: "button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: ""
---ACTION---*/
\ No newline at end of file
try {
this.expandAll();
} catch (e) {
print(_.toString(e));
}
/*---ACTION---
ICON: "plus-square-o"
LABEL: "Expand All"
LABEL_ZHCN: "展开全部"
LABEL_ZHTW: "展開全部"
ACCEL: ""
TOOLTIP: "Expand All"
TOOLTIP_ZHCN: "展开全部"
TOOLTIP_ZHTW: "展開全部"
PERMISSION: ""
CHECKED: ""
GROUP: ""
STYLE: "button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: ""
---ACTION---*/
\ No newline at end of file
importPackage("moment");
importPackage('ikm.ole');
function exportToExcel(field_text_list, field_name_list, allData, excel) {
//表头字段
for (var i = 0; i< field_text_list.length; i++) {
var range = String.fromCharCode(65 + i) + "1";
excel.setRangeValue(range, field_text_list[i]);
excel.setRangeHorizontalAlignment(range, -4108);//-4108 x1center 水平居中
var font_map = {
Size: 12,
Bold: true,
Color: -11480942,
ThemeColor: 1
};
excel.setRangeFont(range, font_map);
excel.setRangeBackgroundColor(range, '#64CC33'); //背景色设为绿色
excel.autoFitColumns(String.fromCharCode(65 + i));
}
//数据
var row = 2;
_.forEach(allData, function (v) {
var j = 0;
_.forEach(field_name_list, function (v2) {
var cell = excel.getCell(row, j + 1);
excel.setCellValue(cell, _.toString(v[v2]));
j++;
})
row++;
})
//边框
var row = excel.getUsedRows();
var column = excel.getUsedColumns();
var rangecolunmn = String.fromCharCode(65 + column - 1);
var used_range = _.format("A1:{0}{1}", rangecolunmn, row);
var border = {
Color: -4165632,
LineStyle: 1,
TintAndShader: 0,
Weight: 2
};
excel.setRangeBorder(used_range, border);
}
function treeData2TableData(iDataLst, iChildrenKey) {
var allDataLst = [];
_.forEach(iDataLst, function (item) {
var childrenLst = item[iChildrenKey];
delete item[iChildrenKey];
allDataLst.push(item);
if (!_.isEmpty(childrenLst)) {
allDataLst = allDataLst.concat(treeData2TableData(childrenLst, iChildrenKey));
}
})
return allDataLst;
}
try {
var self = this;
var chooseDlg = new TTableChooserDialog();
chooseDlg.setTitle(this.ttr("Select Export Tab"));
chooseDlg.setHeaderItem([
{},
{
"name": "name",
"display": self.ttr("Name"),
"displayRole": "$name",
"resizeMode": "Stretch"
}
]);
chooseDlg.setPrimaryKey("index");
chooseDlg.setDataKeyList(["index", "name"]);
chooseDlg.loadAllData(this.allTabInfo());
var selectedTabLst = chooseDlg.run();
if (selectedTabLst.length == 0) {
return;
}
var moduleName = String(this.moduleName());
moduleName = moduleName.replace(/\-/g, " ");
var fileName = _.format("{0} {1}.xlsx", moduleName, moment().format("YYYYMMDDHHmmss"));
var fileDlg = new TFileDialog(this.ttr("Please select save file"), fileName);
fileDlg.setNameFilters(["EXCEL(*.xlsx)"]);
fileDlg.setAcceptMode("AcceptSave");
var strLst = fileDlg.run();
if (strLst.length == 0 ) {
return;
}
var absoluteFileName = String(strLst[0]);
var excel = new TExcel();
excel.setExcelVisible(true);
excel.addBook();
var i = 1;
_.forEach(selectedTabLst, function (v) {
var index = _.toNumber(v['index']);
var tabName = v['name'];
var treeView = self.getTreeView(index);
if (treeView) {
if (i > excel.getSheetsCount()) {
excel.appendSheet(tabName);
}
excel.selectSheet(i);
excel.setSheetName(tabName);
var headerItems = treeView.headerItem();
var dataLst = treeView.allDataMap();
var allData = treeData2TableData(dataLst, "CHILDREN");
var field_text_list = [];
var field_name_list = [];
_.forEach(headerItems, function (v) {
field_text_list.push(v['display']);
field_name_list.push(v['displayRole'].replace('$', ''));
});
print("field_text_list" + _.toString(field_text_list));
exportToExcel(field_text_list, field_name_list, allData, excel);
i++;
}
})
excel.saveAsBook(absoluteFileName.replace(/\//g, "\\"));
excel.closeBook();
excel.quitExcel();
this.alertOk(this.ttr("Export success!"));
} catch (e) {
print(e);
}
/*---ACTION---
ICON: "export"
LABEL: "Export Excel"
LABEL_ZHCN: "导出Excel"
LABEL_ZHTW: "導出Excel"
ACCEL: ""
TOOLTIP: "Export Excel"
TOOLTIP_ZHCN: "导出Excel"
TOOLTIP_ZHTW: "導出Excel"
PERMISSION: ""
CHECKED: ""
GROUP: ""
STYLE: "button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: ""
---ACTION---*/
\ No newline at end of file
try {
var errLst = this.uiLoader().validateAll("COMMIT", true, "ERROR");
if (!_.isEmpty(errLst)) {
var errStrLst = [];
for (var i in errLst) {
errStrLst.push(errLst[i]['text']);
}
TMessageBox.error(this, this.ttr("Validate Error"), errStrLst.join("\n"));
return;
}
var uiLoaderData = this.uiLoaderValues();
var totalData = this.getTotalData(uiLoaderData);
this.reopenTotalTab(totalData);
} catch (e) {
TMessageBox.error(this, this.ttr("Search Failed"), _.toString(e))
print(e);
}
/*---ACTION---
ICON: "search"
LABEL: "Search"
LABEL_ZHCN: "查询"
LABEL_ZHTW: "查詢"
ACCEL: ""
TOOLTIP: "Search"
TOOLTIP_ZHCN: "查询"
TOOLTIP_ZHTW: "查詢"
PERMISSION: ""
CHECKED: ""
GROUP: ""
STYLE: "button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: ""
---ACTION---*/
\ No newline at end of file
try {
this.onSetUiClicked();
} catch (e) {
print(e);
}
/*---ACTION---
ICON: "cog"
LABEL: "Set Condition Ui"
LABEL_ZHCN: "编辑界面"
LABEL_ZHTW: "編輯界面"
ACCEL: ""
TOOLTIP: "Set Condition Ui"
TOOLTIP_ZHCN: "编辑界面"
TOOLTIP_ZHTW: "編輯界面"
PERMISSION: ""
CHECKED: ""
GROUP: ""
STYLE: "button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: ""
---ACTION---*/
# 模块标题
sys_title: "SEC TABLE REPORT TEMP1"
sys_title_en: "SEC TABLE REPORT TEMP1"
sys_title_zhcn: "SEC表格类报表模板1"
sys_title_zhtw: "SEC表格类报表模板1"
# 模块图标
sys_icon: ""
# 模块对应的插件DLL名称
sys_plugin: "toptemplateclassplugin"
# 模块对应的类名
sys_class: "TopTemplateClass6"
# 打开模块的权限
sys_open_right: ""
# 当关闭窗口时,如果提示是否保存,保存调用的action
sys_save_action: ""
# 该模块用到的枚举列表
sys_enum_list: []
# 该模块用到的除了Action之外的权限列表
sys_permission_list: []
# 左侧占用比例
width_ratio: 0.15
# 左侧UI
condition_ui{
table_name: "pub_conf",
path_name: "path",
path_value: "ConditionUi",
field: "json_data",
field_format: {
"json_data": "json"
}
}
# 左侧ui工具栏
"CONDITION_TOOLBAR": [
{"type":"toolitem","action":"search"},
{"type":"stretcher"},
{type:"menu", text:"", icon:"ellipsis-v",
child: [
{"type":"menuitem","action":"set_condition_ui"}
]}
]
# 工具栏
"MAIN_TOOLBAR": [
{"type":"toolitem","action":"export_excel"},
{"type":"stretcher"}
]
#所有树形控件的菜单
"TREEVIEW_POPUP": [
{"type":"menuitem","action":"collapseAll"},
{"type":"menuitem","action":"expandAll"}
]
\ No newline at end of file
this.afterViewInit = function () {
var self = this;
var stackup_viewer = self.uiLoader().getObject('stackup');
stackup_viewer.setDrawSetting(self.config("stackup.draw_setting"));
var selector = new TSqlSelectorV2;
selector.setTable("pdm_stkmatlib");
selector.setWhere("class = 'Core'");
selector.setField("DISTINCT family");
selector.setOrder(["family ASC"]);
var cores = self.runSqlQueryOnThreadSync("TOPSQLTHREAD_SELECT_ARRAYMAP", selector);
cores = _.map(cores, function(item) { return { name: item.family, text: item.family } } );
self.naviView().getObject('attr_data.core_family').setData('item_list', cores);
selector.clear();
selector.setTable("pdm_stkmatlib");
selector.setWhere("class = 'Prepreg'");
selector.setField("DISTINCT family");
selector.setOrder(["family ASC"]);
var pps = self.runSqlQueryOnThreadSync("TOPSQLTHREAD_SELECT_ARRAYMAP", selector);
pps = _.map(pps, function(item) { return { name: item.family, text: item.family } } );
self.naviView().getObject('attr_data.pp_family').setData('item_list', pps);
}
this.onNaviReset = function () {
var naviUi = this.naviLoader();
naviUi.clearValues();
this.refresh();
}
\ No newline at end of file
try {
this.reloadItem();
} catch(e) {
print(e);
}
/*---ACTION---
ICON: "cancel"
LABEL: "Cancel"
LABEL_ZHCN: "取消"
LABEL_ZHTW: "取消"
ACCEL: ""
TOOLTIP: "Cancel the action"
TOOLTIP_ZHCN: "取消动作"
TOOLTIP_ZHTW: "取消動作"
CHECKED: ""
GROUP: ""
STYLE: "button_style=text"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "return (this.isDetailModified()) ? 'enable' : 'hide';"
---ACTION---*/
\ No newline at end of file
try {
var ans = TMessageBox.question(this, this.ttr("Do you want to delete the selected item?"), '', '',
[this.ttr('Delete')+':Yes:Yes:Error', this.ttr('Cancel')+':Cancel:Cancel:Normal']);
if (ans != 'Yes') {
return;
}
this.deleteItems(this.selectedItems());
} catch (e) {
print(e);
}
/*---ACTION---
ICON: "times-circle"
LABEL: "Delete"
LABEL_ZHCN: "刪除"
LABEL_ZHTW: "刪除"
ACCEL: "Delete"
TOOLTIP: "Delete"
TOOLTIP_ZHCN: "删除"
TOOLTIP_ZHTW: "刪除"
PERMISSION: "sys-user-delete"
CHECKED: ""
GROUP: ""
STYLE: "size=small button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "if(this.selectedItems().length > 0 && !this.isDetailModified()){return 'enable'}else{return 'disable'}"
---ACTION---*/
\ No newline at end of file
try {
this.newItem();
} catch (e) {
print(e);
}
/*---ACTION---
ICON: "plus"
LABEL: "New"
LABEL_ZHCN: "新建"
LABEL_ZHTW: "新建"
ACCEL: ""
TOOLTIP: "Add new item"
TOOLTIP_ZHCN: "新建条目"
TOOLTIP_ZHTW: "新建條目"
PERMISSION: "sys-user-create"
CHECKED: ""
GROUP: ""
STYLE: "button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "return (!this.isDetailModified()) ? 'enable' : 'disable';"
---ACTION---*/
\ No newline at end of file
try {
this.refresh();
} catch (e) {
print(e);
}
/*---ACTION---
ICON: "refresh"
LABEL: "Refresh"
LABEL_ZHCN: "刷新"
LABEL_ZHTW: "刷新"
ACCEL: "F5"
TOOLTIP: "Refresh"
TOOLTIP_ZHCN: "刷新"
TOOLTIP_ZHTW: "刷新"
CHECKED: ""
GROUP: ""
STYLE: "size=small button_style=icon"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: ""
---ACTION---*/
\ No newline at end of file
try {
this.reloadItem();
} catch(e) {
print(e);
}
/*---ACTION---
ICON: "refresh"
LABEL: "Refresh"
LABEL_ZHCN: "刷新"
LABEL_ZHTW: "刷新"
ACCEL: ""
TOOLTIP: "Reload data from database"
TOOLTIP_ZHCN: "重新从数据库加载数据"
TOOLTIP_ZHTW: "重新從數據庫加載數據"
CHECKED: ""
GROUP: ""
STYLE: "button_style=icon"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "return this.isDetailModified() ? 'hide' : 'enable';"
---ACTION---*/
\ No newline at end of file
try {
this.saveItem();
} catch(e) {
print(e);
}
/*---ACTION---
ICON: "save"
LABEL: "Save"
LABEL_ZHCN: "保存"
LABEL_ZHTW: "保存"
ACCEL: "Ctrl+S"
TOOLTIP: "Save"
TOOLTIP_ZHCN: "保存"
TOOLTIP_ZHTW: "保存"
PERMISSION: ""
CHECKED: ""
GROUP: ""
STYLE: " button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "return (this.isDetailModified()) ? 'enable' : 'disable';"
---ACTION---*/
\ No newline at end of file
function func(self) {
var ui = {
type: 'TabWidget',
child:
{
type: 'VBoxLayout',
property: {stylesheet:"QTabWidget{background-color:red}"},
pack: { label: self.ttr('User Info') },
child: [
{
type: 'FormGridLayout',
child: [
{
name: 'id',
type: 'LineEdit',
title: self.ttr('ID'),
pack: { label: self.ttr('ID') },
property: { enabled: false },
state: function(obj) {
return "Hide";
}
},
{
name: 'contcat_id',
type: 'LineEdit',
property: { enabled: false },
state: function(obj,self) {
return 'Hide';
}
},
{
name: 'username',
type: 'LineEdit',
pack: { label: self.ttr('Login Name') }
},
{
name: 'password',
type: 'LineEdit',
pack: { label: self.ttr('Password') },
state: function(obj) {
return "Hide";
}
},
{
name: 'fullname',
type: 'LineEdit',
pack: { label: self.ttr('Full Name') }
},
{
name: 'staffid',
type: 'LineEdit',
pack: { label: self.ttr('Staff ID') }
},
{
name: 'mail',
type: 'LineEdit',
pack: { label: self.ttr('Mail') }
},
{
name: 'remark',
type: 'PlainTextEdit',
property: { vertical_scroll_bar_policy: 'ScrollBarAlwaysOff' },
pack: { label: self.ttr('Remark') }
},
{
name: 'status',
type: 'ComboBox',
property: { item_list: TOPENM.enumList("sys-user-status").toComboList() },
pack: { label: self.ttr('Status') }
},
]
},
{
type: 'Stretch'
}
]
}
};
return ui;
}
\ No newline at end of file
"Full Name": {en: "Full Name",zhcn: "全名",zhtw: "全名"}
"Login Name": {en: "Login Name",zhcn: "登录名",zhtw: "登錄名"}
"Staff ID": {en: "Staff ID",zhcn: "工号",zhtw: "工號"}
"Status": {en: "Status",zhcn: "状态",zhtw: "狀態"}
"Search": {en: "Search",zhcn: "搜索",zhtw: "搜索"}
"Do you want to delete the selected item?": {en: "", zhcn: "确定删除选中项?", zhtw: "確定刪除選中項?"}
"Delete": {en: "Delete",zhcn: "删除",zhtw: "刪除"}
"Cancel": {en: "Cancel",zhcn: "取消",zhtw: "取消"}
"Remark": {en: "Remark",zhcn: "备注",zhtw: "備註"}
"Mail": {en: "Mail",zhcn: "邮箱",zhtw: "郵箱"}
"User Info": {en: "User Info",zhcn: "用户信息",zhtw: "用戶信息"}
\ No newline at end of file
# 模块标题
sys_title: "User Management"
sys_title_en: "User Management"
sys_title_zhcn: "用户管理"
sys_title_zhtw: "用戶管理"
# 模块图标(普通图标在font awesome中找 http://fontawesome.io/icons/)
sys_icon: "user-o"
# 模块对应的插件DLL名称
sys_plugin: "toptemplateclassplugin"
# 模块对应的类名
sys_class: "TopTemplateClass4"
# 打开模块的权限
sys_open_right: ""
# 当关闭窗口时,如果提示是否保存,保存调用的action
sys_save_action: ""
# 该模块用到的枚举列表
sys_enum_list: []
# 该模块用到的除了Action之外的权限列表
sys_permission_list: ["sys-user-status"]
navi {
__type__: "UiLoader"
is_expanded: true
}
# 主表格
view {
# 数据项, 默认包含表头中配置的数据项
data_keys: [
"id",
"username",
"fullname",
"contcat_id",
"staffid",
"mail",
"remark",
"status"
]
# 主键
primary_key: "id"
# 水平表头
horizontal_header: [
{
"name": "username",
"display": "Login Name",
"displayRole": "$username",
"dataType": "string",
"resizeMode": "Interactive",
"search": "string"
},
{
"name": "fullname",
"display": "Full Name",
"displayRole": "$fullname",
"dataType": "string",
"resizeMode": "Interactive",
"search": "string"
},
{
"name": "staffid",
"display": "Staff ID",
"displayRole": "$staffid",
"dataType": "string",
"resizeMode": "Interactive",
"search": "string"
},
{
"name": "mail",
"display": "Mail",
"displayRole": "$mail",
"dataType": "string",
"resizeMode": "Interactive",
"size": "200"
},
{
"name": "status",
"display": "Status",
"displayRole": "$status.text",
"resizeMode": "Interactive",
"decorationRole": "$status.icon",
"format": "enum(sys-user-status)"
},
{
"name": "remark",
"display": "Remark",
"displayRole": "$remark",
"resizeMode": "Interactive",
},
]
# 默认排序列
sort_by: "id DESC"
# 数据集
data_set {
# 数据库表名
db_table_name: ""
# 删除标记
# 若为空表示做物理删除
db_del_flag_key: ""
# 过滤项
db_filter {
}
db_sql: "select U.id, U.username, U.staffid, C.mail, U.remark, U.status, U.contcat_id, U.fullname from sys_user AS U LEFT JOIN pub_contacts AS C ON U.contcat_id = C.id"
}
}
function func(self) {
return {
type: 'FormGridLayout',
child: [
{
name: "username",
type: "LineEdit",
pack: { label: self.ttr("Login Name") },
property: {
user_data: { field_name: "username", operator: "like" }
}
},
{
name: "fullname",
type: "LineEdit",
pack: { label: self.ttr("Full Name") },
property: {
user_data: { field_name: "fullname", operator: "like" }
}
},
{
name: "staffid",
type: "LineEdit",
pack: { label: self.ttr("Staff ID") },
property: {
user_data: { field_name: "staffid", operator: "like" }
}
},
{
name: "status",
type: "ComboBox",
pack: { label: self.ttr("Status") },
property: {
item_list: TOPENM.enumList("sys-user-status").toComboList(),
user_data: { field_name: "status" }
}
}
]
};
}
# 工具栏
"MAIN_TOOLBAR": [
{"type":"toolitem","action":"new"},
{"type":"stretcher"},
{"type":"searchentry","name":"SEARCH_ENTRY"}
{"type":"toolitem","action":"refresh"}
]
# 表格的右键菜单
"TABLEVIEW_POPUP": [
{"type":"menuitem","action":"delete"},
{"type":"separator"},
{"type":"menuitem","action":"refresh"}
]
# 底部工具栏
"BOTTOM_TOOLBAR" : [
{"type":"stretcher"},
{"type":"pagetool","name":"PAGE_TOOL"}
]
# 详细信息工具栏
"DETAIL_TOOLBAR": [
{"type":"toolitem","action":"save_detail"},
{"type":"stretcher"},
{"type":"toolitem","action":"cancel_detail"},
{"type":"toolitem","action":"refresh_detail"}
]
\ No newline at end of file
try {
this.reloadItem();
} catch(e) {
print(e);
}
/*---ACTION---
ICON: "cancel"
LABEL: "Cancel"
LABEL_ZHCN: "取消"
LABEL_ZHTW: "取消"
ACCEL: ""
TOOLTIP: "Cancel Edit"
TOOLTIP_ZHCN: "取消编辑"
TOOLTIP_ZHTW: "刷新編輯"
CHECKED: ""
GROUP: ""
STYLE: "button_style=text"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "return (this.isDetailModified()) ? 'enable' : 'hide';"
---ACTION---*/
\ No newline at end of file
try {
this.copyItem();
} catch(e) {
print(e);
}
/*---ACTION---
ICON: "copy"
LABEL: "Copy"
LABEL_ZHCN: "复制"
LABEL_ZHTW: "複製"
ACCEL: ""
TOOLTIP: "Copy"
TOOLTIP_ZHCN: "复制"
TOOLTIP_ZHTW: "複製"
PERMISSION: ""
CHECKED: ""
GROUP: ""
STYLE: "button_style=icon"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "return this.isDetailModified() ? 'hide' : 'enable';"
---ACTION---*/
\ No newline at end of file
try {
var ans = TMessageBox.question(this, this.ttr("Are you sure to delete selected items?"), '', '',
[this.ttr('Delete')+':Yes:Yes:Primary', this.ttr('Cancel')+':Cancel:Cancel:Normal']);
if (ans != 'Yes') {
return;
}
this.deleteItems(this.selectedItems());
} catch (e) {
print(e);
}
/*---ACTION---
ICON: "times-circle"
LABEL: "Delete"
LABEL_ZHCN: "刪除"
LABEL_ZHTW: "刪除"
ACCEL: "Delete"
TOOLTIP: "Delete"
TOOLTIP_ZHCN: "删除"
TOOLTIP_ZHTW: "刪除"
PERMISSION: ""
CHECKED: ""
GROUP: ""
STYLE: "size=small button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "if(this.selectedItems().length > 0 && !this.isDetailModified()){return 'enable'}else{return 'disable'}"
---ACTION---*/
\ No newline at end of file
try {
this.newItem();
} catch (e) {
print(e);
}
/*---ACTION---
ICON: "plus"
LABEL: "New"
LABEL_ZHCN: "新建"
LABEL_ZHTW: "新建"
ACCEL: "Ctrl+N"
TOOLTIP: "New"
TOOLTIP_ZHCN: "新建"
TOOLTIP_ZHTW: "新建"
PERMISSION: ""
CHECKED: ""
GROUP: ""
STYLE: "button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "if (!this.isDetailModified()){return 'enable'} else {return 'disable'}"
---ACTION---*/
\ No newline at end of file
try {
this.refresh();
} catch (e) {
print(e);
}
/*---ACTION---
ICON: "refresh"
LABEL: "Refresh"
LABEL_ZHCN: "刷新"
LABEL_ZHTW: "刷新"
ACCEL: "F5"
TOOLTIP: "Refresh"
TOOLTIP_ZHCN: "刷新"
TOOLTIP_ZHTW: "刷新"
CHECKED: ""
GROUP: ""
STYLE: "size=small button_style=icon"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: ""
---ACTION---*/
\ No newline at end of file
try {
this.reloadItem();
} catch(e) {
print(e);
}
/*---ACTION---
ICON: "refresh"
LABEL: "Refresh"
LABEL_ZHCN: "刷新"
LABEL_ZHTW: "刷新"
ACCEL: ""
TOOLTIP: "Reload data from database"
TOOLTIP_ZHCN: "重新从数据库加载数据"
TOOLTIP_ZHTW: "重新從數據庫加載數據"
CHECKED: ""
GROUP: ""
STYLE: "button_style=icon"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "return this.isDetailModified() ? 'hide' : 'enable';"
---ACTION---*/
\ No newline at end of file
try {
this.saveItem();
} catch(e) {
print(e);
}
/*---ACTION---
ICON: "save"
LABEL: "Save"
LABEL_ZHCN: "保存"
LABEL_ZHTW: "保存"
ACCEL: "Ctrl+S"
TOOLTIP: "Save"
TOOLTIP_ZHCN: "保存"
TOOLTIP_ZHTW: "保存"
PERMISSION: ""
CHECKED: ""
GROUP: ""
STYLE: " button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "return (this.isDetailModified()) ? 'enable' : 'disable';"
---ACTION---*/
\ No newline at end of file
"Title": {en: "Title", zhcn: "标题", zhtw: "標題"}
"Navigation": {en: "Navigation", zhcn: "导航栏", zhtw: "導航欄"}
"Display Navigation": {en: "Display Navigation", zhcn: "显示导航栏", zhtw: "顯示導航欄"}
"Hide Navigation": {en: "Hide Navigation", zhcn: "隐藏导航栏", zhtw: "隱藏導航欄"}
"Catergory": {en: "Catergory", zhcn: "分类", zhtw: "分類"}
"Priority": {en: "Priority", zhcn: "优先级", zhtw: "優先級"}
"Last execution time": {en: "Last execution time", zhcn: "上次维护时间", zhtw: "上次維護時間"}
"Next execution time": {en: "Next execution time", zhcn: "下次维护时间", zhtw: "下次維護時間"}
"Machine Code": {en: "Machine Code", zhcn: "设备编号", zhtw: "設備編號"}
"Machine Name": {en: "Machine Name", zhcn: "设备名称", zhtw: "設備名稱"}
"Maintenance Type": {en: "Maintenance Type", zhcn: "维护类型", zhtw: "維護類型"}
"Maintenance Category": {en: "Maintenance Category", zhcn: "维护分类", zhtw: "維護分類"}
"Execution Type": {en: "Execution Type", zhcn: "计划类型", zhtw: "計劃類型"}
"Execution Cycle": {en: "Execution Cycle", zhcn: "计划周期", zhtw: "計劃週期"}
"Status": {en: "Status", zhcn: "状态", zhtw: "狀態"}
"Last Execution Time": {en: "Last Execution Time", zhcn: "上次执行时间", zhtw: "上次執行時間"}
"Next Execution Time": {en: "Next Execution Time", zhcn: "下次执行时间", zhtw: "下次執行時間"}
"Maintenance Person": {en: "Maintenance Person", zhcn: "维护人员", zhtw: "維護人員"}
"Maintenance Content": {en: "Maintenance Content", zhcn: "维护内容", zhtw: "維護內容"}
"Class": {en: "Maintenance Class", zhcn: "维护类型", zhtw: "維護類型"}
"Load data successful!": {en: "Load data successful!" ,zhcn: "加载数据完成!" ,zhtw: "加載數據完成!"}
"Exec Plan": {en: "Exec Plan", zhcn: "执行计划", zhtw: "執行計劃"}
"Class": {en: "Maintenance Class", zhcn: "维护类型", zhtw: ""}
"Choose": {en: "Choose", zhcn: "选择", zhtw: "選擇"}
"Choose Machine": {en: "Choose Machine", zhcn: "选择设备", zhtw: "選擇設備"}
"Choose Person": {en: "Choose Person", zhcn: "选择人员", zhtw: "選擇人員"}
"Record No": {en: "Record No", zhcn: "记录单号", zhtw: "記錄單號"}
"Apply Time": {en: "Apply Time", zhcn: "申请时间", zhtw: "申請時間"}
"Apply Person": {en: "Apply Person", zhcn: "申请人", zhtw: "申請人"}
"Start Time": {en: "Start Time", zhcn: "开始时间", zhtw: "開始時間"}
"End Time": {en: "End Time", zhcn: "结束时间", zhtw: "結束時間"}
"Basic Info": {en: "Basic Info", zhcn: "基本信息", zhtw: "基本信息"}
"Ok": {en: "OK", zhcn: "确定", zhtw: "確定"}
"Cancel": {en: "Cancel", zhcn: "取消", zhtw: "取消"}
"Cycle Value": {en: "Cycle Value", zhcn: "周期", zhtw: "週期"}
"Cycle Unit": {en: "Cycle Unit", zhcn: "周期单位", zhtw: "週期單位"}
"Name": {en: "Name", zhcn: "姓名", zhtw: "姓名"}
\ No newline at end of file
# 模块标题
sys_title: "Template Demo - Table With Category And Detail"
sys_title_en: "Template Demo - Table With Category And Detail"
sys_title_zhcn: "带导航栏和详细信息的单表展示"
sys_title_zhtw: ""
# 模块图标
sys_icon: "wpforms"
# 模块对应的插件DLL名称
sys_plugin: "toptemplateclassplugin"
# 模块对应的类名
sys_class: "TopTemplateClass4"
# 许可证验证键
sys_license_key: ""
# 打开模块的权限
sys_open_right: ""
# 语言包,默认包含自己模块的语言包
sys_lang_list: []
# 当关闭窗口时,如果提示是否保存,保存调用的action
sys_save_action: ""
# 该模块用到的枚举列表
sys_enum_list: []
# 该模块用到的除了Action之外的权限列表
sys_permission_list: []
# 导航栏
# is_checkable,=true 或1, 表示支持checkbox形式; =false 或0, 表示非checkbox形式
navi: {
__type__: CategoryTreeViewAndAdvancedQuery,
is_checkable: 1,
categories: [
{
name: "class",
text: "Maintenance Type",
icon: "",
visible: 1,
expand: 1,
checked: 0,
data: "",
children: [
{ name: "repair", text: "repair", data: "class", checked: 1, VISIBLE:1 },
{ name: "maintenance", text: "maintenance", data: "class", checked: 1, VISIBLE:1 },
{ name: "spot_check", text: "spot_check", data: "class", checked: 1, VISIBLE:1 }
],
enum_children: "tpm-machine-maintenance-plan-class",
enum_checked:["repair"],
enum_invisible:[]
},
{
name: "category",
text: "Catergory",
icon: "",
visible: 1,
expand: 1,
checked: 0,
data: "",
children: [],
enum_children: "tpm-machine-maintenance-plan-category",
enum_checked:["overhaul", "part_repairing", "lubrication", "sealing"],
enum_invisible:[]
}
]
}
# 高级查询
advance: {
"advanced_items" : [
{"name" : "attr_data.machine_code", "title" : "Machine Code" , "widgetType" : "LineEdit" , "wgt_prop" : "" , "optionList" : []},
{"name" : "attr_data.machine_name", "title" : "Machine Name" , "widgetType" : "LineEdit" , "wgt_prop" : "" , "optionList" : []},
{"name" : "title", "title" : "Title" , "widgetType" : "LineEdit" , "wgt_prop" : "" , "optionList" : []},
{"name" : "class", "title" : "Class" , "widgetType" : "ComboBox" , "wgt_prop" : "" , "optionList" : "enum(tpm-machine-maintenance-plan-class)"}
],
"condition" :{
"condition": "1 and 2",
"value": [
{
"ignoreEmpty": false,
"name": "attr_data.machine_code",
"operator": "LIKE",
"title": "Machine Code",
"valid": true,
"value1": "00"
},
{
"ignoreEmpty": false,
"name": "attr_data.machine_name",
"operator": "LIKE",
"title": "Machine Name",
"valid": true,
"value1": "4"
}
]
}
}
# 主表格
view {
# 数据项, 默认包含表头中配置的数据项
data_keys: ["id","class","status","attr_data.machine_code","attr_data.machine_name","machine_id","execution_cycle","attr_data.cycle_value","attr_data.cycle_unit"
"title","category","priority","last_execution_time","next_execution_time","description","maintenance_person_name"]
# 主键
primary_key: "id"
# 水平表头
horizontal_header: [
{
"name": "attr_data.machine_code",
"display": "Machine Code",
"displayRole": "$attr_data.machine_code",
"size": 100
},
{
"name": "attr_data.machine_name",
"display": "Machine Name",
"displayRole": "$attr_data.machine_name",
"size": 100
},
{
"name": "title",
"display": "Title",
"displayRole": "$title",
"size": 100,
"search": "string"
},
{
"name": "class",
"display": "Class",
"displayRole": "$class.text",
"size": 100,
"format": "enum(tpm-machine-maintenance-plan-class)"
},
{
"name": "category",
"display": "Catergory",
"displayRole": "$category.text",
"size": 100
"format": "enum(tpm-machine-maintenance-plan-category)"
},
{
"name": "priority",
"display": "Priority",
"displayRole": "$priority",
"size": 100
},
{
"name": "status",
"display": "Status",
"displayRole": "$status.text",
"size": 100,
"format": "enum(tpm-machine-maintenance-plan-status)"
},
{
"name": "last_execution_time",
"display": "Last execution time",
"displayRole": "$last_execution_time",
"size": 200
},
{
"name": "next_execution_time",
"display": "Next execution time",
"displayRole": "$next_execution_time",
"size": 200
}
]
# 默认排序列
sort_by: "id DESC"
# 数据集
data_set {
# 数据库表名
db_table_name: "tpm_machine_maintenance_plan"
db_filter: ""
}
}
function func(self) {
return {
type: 'FormGridLayout',
child: [
{
name: 'attr_data.machine_code',
type: 'IntLineEdit',
pack: { label: self.ttr('Machine Code') },
property: {
user_data: { field_name: "attr_data#>>'{machine_code}'", operator: 'ilike' }
}
},
{
name: 'attr_data.core_family',
type: 'ComboBox',
pack: { label: self.ttr('Core Family') },
property: {
searchable: true,
user_data: { field_name: "attr_data->>'core_family'", operator: 'LIKE' }
}
},
{
name: 'attr_data.pp_family',
type: 'ComboBox',
pack: { label: self.ttr('PP Family') },
property: {
searchable: true,
user_data: { field_name: "attr_data->>'pp_family'", operator: 'LIKE' }
}
},
{
name: 'title',
type: 'LineEdit',
pack: { label: self.ttr('Title') },
property: {
user_data: { field_name: "title", operator: 'ilike' }
}
}
]
};
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment