Browse Source

Merge branch 'web-0601' of https://git.openi.org.cn/OpenI/aiforge into web-0601

pull/2272/head
Gitea 3 years ago
parent
commit
a7f159a380
11 changed files with 179 additions and 113 deletions
  1. +1
    -1
      custom/public/css/git.openi.css
  2. +8
    -8
      custom/public/rotation3D/rotation3D.js
  3. +1
    -1
      package-lock.json
  4. +4
    -4
      public/home/home.js
  5. +3
    -0
      routers/repo/modelarts.go
  6. +4
    -6
      templates/base/footer.tmpl
  7. +3
    -2
      templates/home.tmpl
  8. +30
    -12
      templates/repo/datasets/index.tmpl
  9. +74
    -67
      web_src/js/components/BrainAnalysis.vue
  10. +42
    -5
      web_src/js/index.js
  11. +9
    -7
      web_src/less/openi.less

+ 1
- 1
custom/public/css/git.openi.css View File

@@ -145,7 +145,7 @@
position: relative; position: relative;
z-index: 9; z-index: 9;
bottom: -9em; bottom: -9em;
width: 540px;
width: 500px;
} }
#homenews > p{ #homenews > p{
color: #BBBBBB; color: #BBBBBB;


+ 8
- 8
custom/public/rotation3D/rotation3D.js View File

@@ -154,7 +154,7 @@ var Rotation3D = window.Rotation3D = function (_opts) {
* y y起点 + (尺寸 * 正弦 * y压缩) - 元素宽度一半 * y y起点 + (尺寸 * 正弦 * y压缩) - 元素宽度一半
*/ */
Rotation3D.prototype.itemStyle = function($item, index, rotation) { Rotation3D.prototype.itemStyle = function($item, index, rotation) {
console.log("itemStyle=" + rotation + " index=" + index);
//console.log("itemStyle=" + rotation + " index=" + index);
var parseSXY = circleMath.parseSXY(rotation, this); var parseSXY = circleMath.parseSXY(rotation, this);
var scale = parseSXY.scale; var scale = parseSXY.scale;
var x = parseSXY.x; var x = parseSXY.x;
@@ -219,7 +219,7 @@ Rotation3D.prototype.itemStyle = function($item, index, rotation) {
*/ */
Rotation3D.prototype.lineStyle = function($line, index, rotation) { Rotation3D.prototype.lineStyle = function($line, index, rotation) {
var rotate = circleMath.parseRotate(rotation, this) var rotate = circleMath.parseRotate(rotation, this)
console.log("lineStyle=" + rotation + " index=" + index);
//console.log("lineStyle=" + rotation + " index=" + index);


$line.css({ $line.css({
transform: 'rotate(' + rotate + 'deg)', transform: 'rotate(' + rotate + 'deg)',
@@ -235,7 +235,7 @@ Rotation3D.prototype.lineStyle = function($line, index, rotation) {
Rotation3D.prototype.goTo = function (index) { Rotation3D.prototype.goTo = function (index) {
var self = this; var self = this;
this.currenIndex = index; this.currenIndex = index;
console.log('goTo currenIndex', index);
//console.log('goTo currenIndex', index);
/** /**
* 1.计算floatIndex,用于控死amdiff * 1.计算floatIndex,用于控死amdiff
*/ */
@@ -319,7 +319,7 @@ Rotation3D.prototype.onAutoPlay = function () {
if (self.currenIndex < 0) { if (self.currenIndex < 0) {
self.currenIndex = self.length - 1 self.currenIndex = self.length - 1
} }
console.log("autoPlayTimer....");
//console.log("autoPlayTimer....");
self.goTo(self.currenIndex); self.goTo(self.currenIndex);
self.currenIndex--; //倒叙 self.currenIndex--; //倒叙
}, this.autoPlayDelay) }, this.autoPlayDelay)
@@ -331,12 +331,12 @@ Rotation3D.prototype.onAutoPlay = function () {
Rotation3D.prototype.onDrag = function () { Rotation3D.prototype.onDrag = function () {
var self = this; var self = this;
var startX, startY, moveX, moveY, endX, endY; var startX, startY, moveX, moveY, endX, endY;
console.log("onDrag....");
//console.log("onDrag....");
// 拖拽:三个事件-按下 移动 抬起 // 拖拽:三个事件-按下 移动 抬起
//按下 //按下
this.$rotation.mousedown(function (e) { this.$rotation.mousedown(function (e) {
startX = e.pageX; startY = e.pageY; startX = e.pageX; startY = e.pageY;
console.log("mousedown....");
//console.log("mousedown....");
// 移动 // 移动
$(document).mousemove(function (e) { $(document).mousemove(function (e) {
// console.log('移动'); // console.log('移动');
@@ -348,10 +348,10 @@ Rotation3D.prototype.onDrag = function () {
$(document).mouseup(function (e) { $(document).mouseup(function (e) {
endX = e.pageX; endY = e.pageY; endX = e.pageX; endY = e.pageY;
moveX = endX - startX; moveY = endY - startY; moveX = endX - startX; moveY = endY - startY;
console.log("mouseup....");
//console.log("mouseup....");
// 每40旋转一步 // 每40旋转一步
var moveIndex = parseInt(Math.abs(moveX) / 50) var moveIndex = parseInt(Math.abs(moveX) / 50)
console.log('moveIndex',moveIndex)
//console.log('moveIndex',moveIndex)
if (moveIndex > 0) { if (moveIndex > 0) {
// console.log(moveX<0 ? '向左' : '向右') // console.log(moveX<0 ? '向左' : '向右')
if (moveX < 0) { //向左 if (moveX < 0) { //向左


+ 1
- 1
package-lock.json View File

@@ -5439,7 +5439,7 @@
"gulp-tap": "^1.0.1", "gulp-tap": "^1.0.1",
"gulp-uglify": "^3.0.1", "gulp-uglify": "^3.0.1",
"inquirer": "^6.2.1", "inquirer": "^6.2.1",
"jquery": "^3.5.1",
"jquery": "^3.4.0",
"less": "^3.7.0", "less": "^3.7.0",
"map-stream": "^0.1.0", "map-stream": "^0.1.0",
"merge-stream": "^2.0.0", "merge-stream": "^2.0.0",


+ 4
- 4
public/home/home.js View File

@@ -206,17 +206,17 @@ function refresh3DInfo(record){
//cloudbrain one //cloudbrain one
var lines = $('.rotation3D__line'); var lines = $('.rotation3D__line');
var span = $('.rotation3D__line').find("span")[0]; var span = $('.rotation3D__line').find("span")[0];
console.log(span);
//console.log(span);
span.innerText =record.RefName; span.innerText =record.RefName;
//$('.rotation3D__line').find("span").eq(0).text(record.RefName) //$('.rotation3D__line').find("span").eq(0).text(record.RefName)
console.log("cloudbrain one line length=" + lines.length);
//console.log("cloudbrain one line length=" + lines.length);
//lines[0].find("span").text(record.RefName); //lines[0].find("span").text(record.RefName);
}else if(record.OpType == "26" || record.OpType == "27" || record.OpType == "28"){ }else if(record.OpType == "26" || record.OpType == "27" || record.OpType == "28"){
//cloudbrain two //cloudbrain two
var lines = $('.rotation3D__line'); var lines = $('.rotation3D__line');
console.log("cloudbrain two line length=" + lines.length);
//console.log("cloudbrain two line length=" + lines.length);
var span = $('.rotation3D__line').find("span")[1]; var span = $('.rotation3D__line').find("span")[1];
console.log(span);
//console.log(span);
span.innerText =record.RefName; span.innerText =record.RefName;
//$('.rotation3D__line').find("span").eq(1).text(record.RefName) //$('.rotation3D__line').find("span").eq(1).text(record.RefName)
//lines[1].find("span").text(record.RefName); //lines[1].find("span").text(record.RefName);


+ 3
- 0
routers/repo/modelarts.go View File

@@ -764,6 +764,7 @@ func trainJobErrorNewDataPrepare(ctx *context.Context, form auth.CreateModelArts
ctx.Data["bootFile"] = form.BootFile ctx.Data["bootFile"] = form.BootFile
ctx.Data["uuid"] = form.Attachment ctx.Data["uuid"] = form.Attachment
ctx.Data["branch_name"] = form.BranchName ctx.Data["branch_name"] = form.BranchName
ctx.Data["cloudbraintype"] = models.TypeCloudBrainTwo


return nil return nil
} }
@@ -954,6 +955,7 @@ func versionErrorDataPrepare(ctx *context.Context, form auth.CreateModelArtsTrai
return err return err
} }
ctx.Data["config_list"] = configList.ParaConfigs ctx.Data["config_list"] = configList.ParaConfigs
ctx.Data["cloudbraintype"] = models.TypeCloudBrainTwo


return nil return nil
} }
@@ -2175,6 +2177,7 @@ func inferenceJobErrorNewDataPrepare(ctx *context.Context, form auth.CreateModel
ctx.Data["model_version"] = form.ModelVersion ctx.Data["model_version"] = form.ModelVersion
ctx.Data["ckpt_name"] = form.CkptName ctx.Data["ckpt_name"] = form.CkptName
ctx.Data["train_url"] = form.TrainUrl ctx.Data["train_url"] = form.TrainUrl
ctx.Data["cloudbraintype"] = models.TypeCloudBrainTwo


return nil return nil
} }


+ 4
- 6
templates/base/footer.tmpl View File

@@ -12,7 +12,7 @@


{{template "base/footer_content" .}} {{template "base/footer_content" .}}


<script src="{{StaticUrlPrefix}}/js/jquery.js?v={{MD5 AppVer}}"></script>




@@ -40,15 +40,13 @@
{{if .RequireTribute}} {{if .RequireTribute}}
<script src="{{StaticUrlPrefix}}/vendor/plugins/tribute/tribute.min.js"></script> <script src="{{StaticUrlPrefix}}/vendor/plugins/tribute/tribute.min.js"></script>
{{end}} {{end}}

<script src="{{StaticUrlPrefix}}/js/jquery.js?v={{MD5 AppVer}}"></script>
{{if .PageIsHome}}
<script rel="stylesheet" src="{{StaticUrlPrefix}}/vendor/plugins/jquery.particleground/jquery.particleground.min.js"></script>
{{end}}
<script src="{{StaticUrlPrefix}}/fomantic/semantic.min.js?v={{MD5 AppVer}}"></script> <script src="{{StaticUrlPrefix}}/fomantic/semantic.min.js?v={{MD5 AppVer}}"></script>
<script src="{{StaticUrlPrefix}}/js/index.js?v={{MD5 AppVer}}"></script> <script src="{{StaticUrlPrefix}}/js/index.js?v={{MD5 AppVer}}"></script>
{{template "custom/footer" .}} {{template "custom/footer" .}}
{{if .PageIsHome}} {{if .PageIsHome}}
<script src="/rotation3D/jquery-3.5.0.min.js"></script>
<script src="/home/home.js?v={{MD5 AppVer}}" type="text/javascript"></script>
<script src="{{StaticUrlPrefix}}/vendor/plugins/jquery.particleground/jquery.particleground.min.js"></script>
<script src="/rotation3D/vue-2.6.10.min.js"></script> <script src="/rotation3D/vue-2.6.10.min.js"></script>
<script src="/rotation3D/rotation3D.js?v={{MD5 AppVer}}"></script> <script src="/rotation3D/rotation3D.js?v={{MD5 AppVer}}"></script>
<script> <script>


+ 3
- 2
templates/home.tmpl View File

@@ -31,7 +31,7 @@
<svg width="50" height="400"> <svg width="50" height="400">
<path id="path1" d="M0 400, 0 0" stroke-dasharray="5,10"/> <path id="path1" d="M0 400, 0 0" stroke-dasharray="5,10"/>
</svg> </svg>
<div class="dot dot1 ri-arrow-left-s-line"><span>调试任务 #31412022050816002</span></div>
<div class="dot dot1 ri-arrow-left-s-line"><span></span></div>
</div> </div>
<div v-if="item.type=='yellow'" class="pos"> <div v-if="item.type=='yellow'" class="pos">
<svg width="10" height="400"> <svg width="10" height="400">
@@ -222,7 +222,8 @@
</div> </div>
</div> </div>
<div class="am-mt-30"></div> <div class="am-mt-30"></div>

<script src="/self/js/jquery.min.js" type="text/javascript"></script>
<script src="/home/home.js?v={{MD5 AppVer}}" type="text/javascript"></script>




{{template "base/footer" .}} {{template "base/footer" .}}

+ 30
- 12
templates/repo/datasets/index.tmpl View File

@@ -118,6 +118,20 @@
.diy-popper { .diy-popper {
max-width: 400px; max-width: 400px;
} }

.ascending {
width: 0;
height: 0;
border: 5px solid transparent;
border-bottom-color: #c0c4cc;
}

.descending {
width: 0;
height: 0;
border: 5px solid transparent;
border-top-color: #c0c4cc;
}
</style> </style>
<div class="repository"> <div class="repository">
{{template "repo/header" .}} {{template "repo/header" .}}
@@ -213,21 +227,24 @@
<div class="ui grid stackable" style="background: #f0f0f0;;"> <div class="ui grid stackable" style="background: #f0f0f0;;">
<div class="row"> <div class="row">
<!-- 数据集名称 --> <!-- 数据集名称 -->
<div class="four wide column name_sort" @click="sortAble('name')" style="width: 24% !important;">
<div class="four wide column name_sort" @click="sortAble('name')"
style="width: 24% !important;cursor: pointer;">
{{$.i18n.Tr "dataset.dataset_file_name"}} {{$.i18n.Tr "dataset.dataset_file_name"}}
<span class="caret-wrapper"> <span class="caret-wrapper">
<i class='ri-arrow-up-s-fill sort-caret-up {{if eq .SortType "nameAsc"}} active-sort {{end}}'></i>
<i
class='ri-arrow-down-s-fill sort-caret-down {{if eq .SortType "nameDesc"}} active-sort {{end}}'></i>
<i class='ascending sort-caret-up {{if eq .SortType "nameAsc"}} active-up-sort {{end}}'
@click.stop="sortIcon('name','up')"></i>
<i class='descending sort-caret-down {{if eq .SortType "nameDesc"}} active-down-sort {{end}}'
@click.stop="sortIcon('name','down')"></i>
</span> </span>
</div> </div>
<div class="one wide column text center size_sort" @click="sortAble('size')" <div class="one wide column text center size_sort" @click="sortAble('size')"
style="width: 7.25% !important;">
style="width: 7.25% !important;cursor: pointer;">
{{$.i18n.Tr "repo.model.manage.size"}} {{$.i18n.Tr "repo.model.manage.size"}}
<span class="caret-wrapper"> <span class="caret-wrapper">
<i class='ri-arrow-up-s-fill sort-caret-up {{if eq .SortType "sizeAsc"}} active-sort {{end}}'></i>
<i
class='ri-arrow-down-s-fill sort-caret-down {{if eq .SortType "sizeDesc"}} active-sort {{end}}'></i>
<i class='ascending sort-caret-up {{if eq .SortType "sizeAsc"}} active-up-sort {{end}}'
@click.stop="sortIcon('size','up')"></i>
<i class='descending sort-caret-down {{if eq .SortType "sizeDesc"}} active-down-sort {{end}}'
@click.stop="sortIcon('size','down')"></i>
</span> </span>
</div> </div>
<div class="two wide column text center"> <div class="two wide column text center">
@@ -239,12 +256,13 @@
<div class="one wide column text center"> <div class="one wide column text center">
{{$.i18n.Tr "repo.cloudbrain_creator"}} {{$.i18n.Tr "repo.cloudbrain_creator"}}
</div> </div>
<div class="three wide column text center" @click="sortAble('time')">
<div class="three wide column text center" @click="sortAble('time')" style="cursor: pointer;">
{{$.i18n.Tr "dataset.dataset_upload_time"}} {{$.i18n.Tr "dataset.dataset_upload_time"}}
<span class="caret-wrapper"> <span class="caret-wrapper">
<i class='ri-arrow-up-s-fill sort-caret-up {{if eq .SortType "timeAsc"}} active-sort {{end}}'></i>
<i
class='ri-arrow-down-s-fill sort-caret-down {{if eq .SortType "timeDesc"}} active-sort {{end}}'></i>
<i class='ascending sort-caret-up {{if eq .SortType "timeAsc"}} active-up-sort {{end}}'
@click.stop="sortIcon('time','up')"></i>
<i class='descending sort-caret-down {{if eq .SortType "timeDesc"}} active-down-sort {{end}}'
@click.stop="sortIcon('time','down')"></i>
</span> </span>
</div> </div>
<div class="four wide column text center"> <div class="four wide column text center">


+ 74
- 67
web_src/js/components/BrainAnalysis.vue View File

@@ -1,86 +1,93 @@
<template> <template>
<div style="width: 100%;"> <div style="width: 100%;">
<div id = "pro_main">
<div id="pro_main">
<div style="margin-top: 10px;"> <div style="margin-top: 10px;">
<b class="pro_item">云脑分析</b> <span class="update_time">数据更新时间:</span> <span style="font-size: 12px;">{{lastUpdatedTime}}&nbsp/&nbsp从有记录起开始统计</span>
<b class="pro_item">云脑分析</b> <span class="update_time">数据更新时间:</span> <span
style="font-size: 12px;">{{lastUpdatedTime}}&nbsp/&nbsp从有记录起开始统计</span>
</div> </div>
<bar-label :width="'95%'" :height="'500px'"></bar-label> <bar-label :width="'95%'" :height="'500px'"></bar-label>
<div style="margin-top: 20px;"> <div style="margin-top: 20px;">
<span class="sta_iterm">统计周期:</span>
<button type="button" class='btnLast' id = "all" v-bind:class="{colorChange:7==dynamic}" @click="resetPage(),getAllProList('all',7)">所有</button>
<span class="sta_iterm">统计周期:</span>
<button type="button" class='btnLast' id="all" v-bind:class="{colorChange:7==dynamic}"
@click="resetPage(),getAllProList('all',7)">所有</button>
<span style="float:right; margin-right: 20px;"> <span style="float:right; margin-right: 20px;">
<div style="display:inline-block;margin-left: 40px; "> <div style="display:inline-block;margin-left: 40px; ">
<a class="el-icon-download" v-if="tableData!=''" :href= "'../api/v1/cloudbrainboard/downloadAll'"></a>
<i class="el-icon-download" v-else="tableData=''" href="#" style="color:rgba(187, 187, 187, 100);" @click='popMark()'></i>
<a class="el-icon-download" v-if="tableData!=''"
:href="'/api/v1/cloudbrainboard/downloadAll'"></a>
<i class="el-icon-download" v-else="tableData=''" href="#"
style="color:rgba(187, 187, 187, 100);" @click='popMark()'></i>
<!-- <span ><a id = "download_file" :href= "'../api/v1/projectboard/downloadAll'" >下载报告</a> </span> --> <!-- <span ><a id = "download_file" :href= "'../api/v1/projectboard/downloadAll'" >下载报告</a> </span> -->
<span >
<a id = "download_file" v-if="tableData!=''" :href= "'../api/v1/cloudbrainboard/downloadAll'">下载报告</a>
<a id = "download_file" v-else="tableData=''" href= "#" style="color:rgba(187, 187, 187, 100);" @click='popMark()'>下载报告</a>
<span>
<a id="download_file" v-if="tableData!=''"
:href="'/api/v1/cloudbrainboard/downloadAll'">下载报告</a>
<a id="download_file" v-else="tableData=''" href="#" style="color:rgba(187, 187, 187, 100);"
@click='popMark()'>下载报告</a>
</span> </span>
</div>
</div>
</span> </span>
</div> </div>
</div> </div>
</div> </div>
</template>
<script>
// import barLabel from './basic/barLabel.vue';
const {AppSubUrl, StaticUrlPrefix, csrf} = window.config;
</template>
<script>
// import barLabel from './basic/barLabel.vue';
const { AppSubUrl, StaticUrlPrefix, csrf } = window.config;


import { export2Excel } from '../excel/util.js'
export default{
name:'ProAnalysis',
components: {
// barLabel,
import { export2Excel } from '../excel/util.js'
export default {
name: 'ProAnalysis',
components: {
// barLabel,
},
methods: {
popMark() {
alert("数据为空时,不能下载!")
}, },
methods: {
popMark(){
exportData() {

// this.getOneProList(this.pro_id,'all',true,7)
// this.getOneProList(this.pro_id,'all',false,7)
// this.fileName()
if (this.tableDataID != '') {
this.currentPage = 1
var saveFileName = this.getFileName()
export2Excel(this.columns, this.tableDataID, saveFileName)
} else {
alert("数据为空时,不能下载!") alert("数据为空时,不能下载!")
},
exportData(){
// this.getOneProList(this.pro_id,'all',true,7)
// this.getOneProList(this.pro_id,'all',false,7)
// this.fileName()
if (this.tableDataID!=''){
this.currentPage=1
var saveFileName = this.getFileName()
export2Excel(this.columns,this.tableDataID,saveFileName)
}else{
alert("数据为空时,不能下载!")
}
},
}

}, },
}
</script>
<style scoped>
.pro_item{
font-size: 16px;
color: rgba(16, 16, 16, 100);
font-family: SourceHanSansSC-bold;
}
.update_time{
line-height: 17px;
font-size: 12px;
color:rgba(187, 187, 187, 100);
margin-left: 10px;
}
.btnLast{
line-height: 1.5;
margin: -3.5px;
border: 1px solid rgba(22, 132, 252, 100);
/* border-right: none; */
background: #FFFF;
color: #1684FC;
width: 60px;
height: 30px;
border-radius:0px 4px 4px 0px;
}
},
}
</script>

<style scoped>
.pro_item {
font-size: 16px;
color: rgba(16, 16, 16, 100);
font-family: SourceHanSansSC-bold;
}

.update_time {
line-height: 17px;
font-size: 12px;
color: rgba(187, 187, 187, 100);
margin-left: 10px;
}


</style>
.btnLast {
line-height: 1.5;
margin: -3.5px;
border: 1px solid rgba(22, 132, 252, 100);
/* border-right: none; */
background: #FFFF;
color: #1684FC;
width: 60px;
height: 30px;
border-radius: 0px 4px 4px 0px;
}
</style>

+ 42
- 5
web_src/js/index.js View File

@@ -4080,16 +4080,53 @@ function initVueDataset() {
location.href = `${location.href}&sort=${dom}Asc` location.href = `${location.href}&sort=${dom}Asc`
} }
else if (params.get('sort') === `${dom}Desc` || params.get('sort').indexOf(`${dom}`) === -1) { else if (params.get('sort') === `${dom}Desc` || params.get('sort').indexOf(`${dom}`) === -1) {
params.delete('sort')
let asc = params.toString() + `&sort=${dom}Asc`
params.set("sort", `${dom}Asc`)
let asc = params.toString()
location.search = asc location.search = asc
} }
else { else {
params.delete('sort')
let desc = params.toString() + `&sort=${dom}Desc`
params.set("sort", `${dom}Desc`)
let desc = params.toString()
location.search = desc location.search = desc
} }
}, },
sortIcon(dom, sort) {
const params = new URLSearchParams(location.search)
if (sort === "up") {
if (params.toString() === '') {
location.href = `${location.href}?sort=${dom}Asc`
}
else if (!params.get('sort')) {
location.href = `${location.href}&sort=${dom}Asc`
} else if (params.get('sort') && params.get('sort').indexOf(`${dom}Asc`) !== -1) {
params.delete('sort')
location.search = params.toString()
} else {
params.set("sort", `${dom}Asc`)
let asc = params.toString()
location.search = asc
}
}
else if (sort === "down") {
if (params.toString() === '') {
location.href = `${location.href}?sort=${dom}Desc`
}
else if (!params.get('sort')) {
location.href = `${location.href}&sort=${dom}Desc`
}
else if (params.get('sort') && params.get('sort').indexOf(`${dom}Desc`) !== -1) {
params.delete('sort')
location.search = params.toString()
} else {
params.set("sort", `${dom}Desc`)
let asc = params.toString()
location.search = asc
}


}

},
setPrivate(uuid, privateFlag, index) { setPrivate(uuid, privateFlag, index) {
const params = { _csrf: csrf, file: uuid, is_private: privateFlag } const params = { _csrf: csrf, file: uuid, is_private: privateFlag }
this.$axios.post('/attachments/private', this.qs.stringify(params)).then((res) => { this.$axios.post('/attachments/private', this.qs.stringify(params)).then((res) => {
@@ -4922,7 +4959,7 @@ window.onOAuthLoginClick = function () {
// Pull SVGs via AJAX to workaround CORS issues with <use> tags // Pull SVGs via AJAX to workaround CORS issues with <use> tags
// https://css-tricks.com/ajaxing-svg-sprite/ // https://css-tricks.com/ajaxing-svg-sprite/
$.get(`${window.config.StaticUrlPrefix}/img/svg/icons.svg`, (data) => { $.get(`${window.config.StaticUrlPrefix}/img/svg/icons.svg`, (data) => {
const div = document.createElementNS('div');
const div = document.createElement('div');
div.style.display = 'none'; div.style.display = 'none';
div.innerHTML = new XMLSerializer().serializeToString(data.documentElement); div.innerHTML = new XMLSerializer().serializeToString(data.documentElement);
document.body.insertBefore(div, document.body.childNodes[0]); document.body.insertBefore(div, document.body.childNodes[0]);


+ 9
- 7
web_src/less/openi.less View File

@@ -1079,17 +1079,19 @@ display: block;
.row .sort-caret-up { .row .sort-caret-up {
position: absolute; position: absolute;
top: 5px; top: 5px;
color: #c0c4cc;
font-size: 18px;

} }


.row .sort-caret-down { .row .sort-caret-down {
position: absolute; position: absolute;
bottom: 3px;
color: #c0c4cc;
font-size: 18px;
bottom: 5px;

}

.row .active-up-sort {
border-bottom-color: #409eff;
} }


.row .active-sort {
color: #409eff !important;
.row .active-down-sort {
border-top-color: #409eff;
} }

Loading…
Cancel
Save