Commit 8a014e84 authored by rockyl's avatar rockyl

Merge branch 'design-cut-mode' into dev

parents ede73eec 157e130b
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
"Alert": "提示", "Alert": "提示",
"Confirm": "确认", "Confirm": "确认",
"Cancel": "取消", "Cancel": "取消",
"Yes":"是", "Yes": "是",
"No":"否", "No": "否",
"Close": "关闭", "Close": "关闭",
"Refresh": "刷新", "Refresh": "刷新",
"Still Close": "直接关闭", "Still Close": "直接关闭",
...@@ -18,8 +18,8 @@ ...@@ -18,8 +18,8 @@
"Remark": "备注", "Remark": "备注",
"Assets": "素材", "Assets": "素材",
"Version": "版本", "Version": "版本",
"Paste same level":"粘贴(同级)", "Paste same level": "粘贴(同级)",
"Paste child":"粘贴(子级)", "Paste child": "粘贴(子级)",
"Exit": "退出", "Exit": "退出",
"Apply": "应用", "Apply": "应用",
"Props": "属性", "Props": "属性",
...@@ -133,8 +133,8 @@ ...@@ -133,8 +133,8 @@
"Env constant": "自定义常量", "Env constant": "自定义常量",
"Custom module": "自定义模块", "Custom module": "自定义模块",
"Package manager": "包管理", "Package manager": "包管理",
"Projectx config": "星速台配置", "Projectx config": "星速台配置",
"Auth manager": "权限管理", "Auth manager": "权限管理",
"Custom module asset mapping": "自定义模块素材映射", "Custom module asset mapping": "自定义模块素材映射",
"Copy template to clipboard": "复制模板到粘贴板", "Copy template to clipboard": "复制模板到粘贴板",
"Copied process to clipboard": "复制过程到粘贴板", "Copied process to clipboard": "复制过程到粘贴板",
...@@ -179,8 +179,8 @@ ...@@ -179,8 +179,8 @@
"Are you sure to delete this asset?": "确定删除这个素材吗", "Are you sure to delete this asset?": "确定删除这个素材吗",
"Are you sure to combine those assets?": "确定合并这些素材吗", "Are you sure to combine those assets?": "确定合并这些素材吗",
"Are you sure to delete all assets": "确定删除全部素材吗", "Are you sure to delete all assets": "确定删除全部素材吗",
"Are you sure to delete this item": "确定删除这一项吗", "Are you sure to delete this item": "确定删除这一项吗",
"Are you sure to delete this user auth": "确定删除这一用户权限", "Are you sure to delete this user auth": "确定删除这一用户权限",
"Rename asset": "重命名素材", "Rename asset": "重命名素材",
"Input asset name": "输入素材名", "Input asset name": "输入素材名",
"Invalid asset name": "无效的素材名", "Invalid asset name": "无效的素材名",
...@@ -257,6 +257,7 @@ ...@@ -257,6 +257,7 @@
"Save behavior successfully": "保存行为成功", "Save behavior successfully": "保存行为成功",
"The main editor is closed and cannot be saved": "主编辑器已关闭,无法保存", "The main editor is closed and cannot be saved": "主编辑器已关闭,无法保存",
"A behavior is being edited. Please save it first": "有行为正在编辑,请先保存", "A behavior is being edited. Please save it first": "有行为正在编辑,请先保存",
"Design cut mode": "设计稿裁剪模式",
"eventGroup": { "eventGroup": {
"in": "接收", "in": "接收",
"out": "派发" "out": "派发"
...@@ -269,35 +270,35 @@ ...@@ -269,35 +270,35 @@
} }
}, },
"details": { "details": {
"label": "详情" "label": "详情"
}, },
"preview-fast": { "preview-fast": {
"label": "预览" "label": "预览"
}, },
"search": { "search": {
"label": "搜索" "label": "搜索"
}, },
"pack": { "pack": {
"label": "打包", "label": "打包",
"sub": { "sub": {
"pack-debug-mode": "调试打包", "pack-debug-mode": "调试打包",
"pack-manager": "打包管理" "pack-manager": "打包管理"
} }
}, },
"mock": { "mock": {
"label": "Mock" "label": "Mock"
}, },
"px-skin-editor": { "px-skin-editor": {
"label": "皮肤" "label": "皮肤"
}, },
"exit": { "exit": {
"label": "退出" "label": "退出"
}, },
"undo": { "undo": {
"icon": "icon-undo" "icon": "icon-undo"
}, },
"redo": { "redo": {
"icon": "icon-redo" "icon": "icon-redo"
} }
}, },
"view_node_menu": { "view_node_menu": {
...@@ -423,38 +424,43 @@ ...@@ -423,38 +424,43 @@
"simple": true "simple": true
}, },
"dependencies": { "dependencies": {
"label": "依赖", "label": "依赖",
"simple": true "simple": true
}, },
"dataMapping": { "dataMapping": {
"label": "数据映射", "label": "数据映射",
"key": "name", "key": "name",
"name": "name" "name": "name"
}, },
"customs": { "customs": {
"label": "自定义模块", "label": "自定义模块",
"key": "id", "key": "id",
"name": "id" "name": "id"
}, },
"mock": { "mock": {
"label": "Mock", "label": "Mock",
"key": "path", "key": "path",
"name": "path" "name": "path"
}, },
"views": { "views": {
"label": "视图", "label": "视图",
"key": "uuid", "key": "uuid",
"name": "name" "name": "name"
}, },
"assets": { "assets": {
"label": "素材", "label": "素材",
"key": "uuid", "key": "uuid",
"name": "name" "name": "name"
}, },
"processes": { "processes": {
"label": "过程", "label": "过程",
"key": "id", "key": "id",
"name": "name" "name": "name"
} }
},
"designCutModes": {
"top": "顶部裁剪",
"center": "上下裁剪",
"bottom": "底部裁剪"
} }
} }
\ No newline at end of file
...@@ -17,7 +17,7 @@ export const editorStore = { ...@@ -17,7 +17,7 @@ export const editorStore = {
state: { state: {
initialized: false, initialized: false,
name: 'Zeroing Editor', name: 'Zeroing Editor',
version: '0.2.1', version: '0.3.0',
templates: { templates: {
builtin: ['blank'], builtin: ['blank'],
custom: [], custom: [],
......
...@@ -29,6 +29,7 @@ import {uploadFiles} from "./editor"; ...@@ -29,6 +29,7 @@ import {uploadFiles} from "./editor";
const storeName = 'project'; const storeName = 'project';
const psStoreName = 'pack-history'; const psStoreName = 'pack-history';
const offsetAll = 172;
const defaultOptions = { const defaultOptions = {
behaviorEditor: 'builtin', behaviorEditor: 'builtin',
...@@ -898,8 +899,20 @@ export const projectStore = { ...@@ -898,8 +899,20 @@ export const projectStore = {
scripts: _scripts scripts: _scripts
}) })
}, },
async importPsd({commit}, {file, action}) { async importPsd({commit}, {file, action, mode}) {
const result = await toZeroing(file, {offset: {y: 172}}); let offset = {};
switch(mode){
case 'top':
offset.y = offsetAll;
break;
case 'center':
offset.y = offsetAll / 2;
break;
case 'bottom':
break;
}
const result = await toZeroing(file, {offset});
let viewFile = new File([result], 'view.json'); let viewFile = new File([result], 'view.json');
const {view, assets} = await editorApi.uploadView(viewFile); const {view, assets} = await editorApi.uploadView(viewFile);
switch (action) { switch (action) {
......
...@@ -55,4 +55,26 @@ ...@@ -55,4 +55,26 @@
} }
} }
} }
}
.select-design-mode-dialog{
.wrapper {
display: flex;
justify-content: space-around;
padding: 10px;
.item {
display: flex;
flex-direction: column;
align-items: center;
padding: 10px;
border-radius: 10px;
border: 2px solid transparent;
}
.item.selected{
border-color: $--color-primary;
}
}
} }
\ No newline at end of file
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<div class="container"> <div class="container">
<div class="header-bar"> <div class="header-bar">
<el-link class="menu-item" @click="toAddView">{{$t('Add')}}</el-link> <el-link class="menu-item" @click="toAddView">{{$t('Add')}}</el-link>
<el-link @click="toImport(0)">{{$t('Import')}}</el-link> <el-link @click="onImportCommand('single')">{{$t('Import')}}</el-link>
<el-dropdown trigger="hover" placement="top" size="mini" @command="onImportCommand"> <el-dropdown trigger="hover" placement="top" size="mini" @command="onImportCommand">
<el-link icon="el-icon-arrow-down" :underline="false"></el-link> <el-link icon="el-icon-arrow-down" :underline="false"></el-link>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
...@@ -69,6 +69,7 @@ ...@@ -69,6 +69,7 @@
</el-tree> </el-tree>
</el-scrollbar> </el-scrollbar>
</div> </div>
<select-design-mode-dialog ref="selectDesignModeDialog" @change="onSelectDesignMode"/>
</pane> </pane>
</template> </template>
...@@ -77,10 +78,11 @@ ...@@ -77,10 +78,11 @@
import Pane from '../../components/Pane'; import Pane from '../../components/Pane';
import {selectFile} from "../../utils"; import {selectFile} from "../../utils";
import events from "../../global-events"; import events from "../../global-events";
import SelectDesignModeDialog from "./Views/SelectDesignModeDialog";
export default { export default {
name: 'Views', name: 'Views',
components: {Pane}, components: {SelectDesignModeDialog, Pane},
data() { data() {
return { return {
filterText: '', filterText: '',
...@@ -239,22 +241,26 @@ ...@@ -239,22 +241,26 @@
.catch(() => { .catch(() => {
}); });
}, },
toImport(action) { toImport(action, mode) {
selectFile(async files => { selectFile(async files => {
events.$emit('upload-indicator', true); events.$emit('upload-indicator', true);
try { try {
await this.importPsd({ await this.importPsd({
file: files[0], file: files[0],
action, action,
mode,
}); });
} catch (e) { } catch (e) {
} }
events.$emit('upload-indicator', false); events.$emit('upload-indicator', false);
}) })
}, },
onImportCommand(command) { onImportCommand(importType) {
this.$refs.selectDesignModeDialog.show(importType);
},
onSelectDesignMode(mode, importType){
let action; let action;
switch (command) { switch (importType) {
case 'single': case 'single':
action = 0; action = 0;
break; break;
...@@ -262,7 +268,7 @@ ...@@ -262,7 +268,7 @@
action = 1; action = 1;
break; break;
} }
this.toImport(action); this.toImport(action, mode);
}, },
onMoreMenu(command, data, node) { onMoreMenu(command, data, node) {
switch (command) { switch (command) {
......
<template>
<el-dialog :title="$t('Design cut mode')" :visible.sync="visible" @opened="onOpen"
:append-to-body="true"
custom-class="select-design-mode-dialog"
>
<div class="wrapper">
<div v-for="(modeName, mode, index) in designCutModes" :key="index" @click="selectCutMode(mode)" class="item" :class="{selected: designCutMode === mode}">
{{modeName}}
<img :src="images[index]">
</div>
</div>
<div slot="footer" class="dialog-footer">
<div></div>
<div>
<el-button size="mini" @click="onClose">{{$t('Close')}}</el-button>
<el-button size="mini" @click="onConfirm" type="primary">{{$t('Confirm')}}</el-button>
</div>
</div>
</el-dialog>
</template>
<script>
export default {
name: "SelectDesignModeDialog",
components: {},
data() {
const designCutModes = this.$t('designCutModes');
let images = [];
let designCutModeKeys = Object.keys(designCutModes);
for (let designCutModeKey of designCutModeKeys) {
images.push(require(`@/assets/${designCutModeKey}.png`))
}
return {
visible: false,
designCutMode: 'top',
designCutModes,
images,
}
},
methods: {
show(importType) {
this.importType = importType;
this.visible = true;
},
onConfirm() {
this.$emit('change', this.designCutMode, this.importType);
this.visible = false;
},
onClose() {
this.visible = false;
},
onOpen() {
},
selectCutMode(mode){
this.designCutMode = mode;
}
}
}
</script>
<style scoped>
</style>
\ No newline at end of file
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