Browse Source

[Fix-8836][UI Next][V1.0.0-Alpha] Rectify this issue about creating a file or directory with a wrong path. (#8880)

* fix this issue

* fix this issue
3.0.0/version-upgrade
calvin 2 years ago committed by GitHub
parent
commit
e4dcf3d2e0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 22
      dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ResourcesController.java
  2. 7
      dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ResourcesService.java
  3. 18
      dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ResourcesServiceImpl.java
  4. 2
      dolphinscheduler-ui-next/src/layouts/content/components/timezone/index.module.scss
  5. 7
      dolphinscheduler-ui-next/src/service/modules/resources/index.ts
  6. 3
      dolphinscheduler-ui-next/src/service/modules/resources/types.ts
  7. 44
      dolphinscheduler-ui-next/src/views/projects/workflow/definition/components/use-modal.ts
  8. 6
      dolphinscheduler-ui-next/src/views/resource/file/folder/use-folder.ts
  9. 19
      dolphinscheduler-ui-next/src/views/resource/file/index.tsx

22
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ResourcesController.java

@ -748,4 +748,26 @@ public class ResourcesController extends BaseController {
Map<String, Object> result = resourceService.authorizedUDFFunction(loginUser, userId);
return returnDataList(result);
}
/**
* query resource by resource id
*
* @param loginUser login user
* @param id resource id
* @return resource
*/
@ApiOperation(value = "queryResourceById", notes = "QUERY_BY_RESOURCE_NAME")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "RESOURCE_ID", required = true, dataType = "Int", example = "10")
})
@GetMapping(value = "/{id}/query")
@ResponseStatus(HttpStatus.OK)
@ApiException(RESOURCE_NOT_EXIST)
@AccessLogAnnotation(ignoreRequestArgs = "loginUser")
public Result queryResourceById(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@PathVariable(value = "id", required = true) Integer id
) {
return resourceService.queryResourceById(id);
}
}

7
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ResourcesService.java

@ -231,4 +231,11 @@ public interface ResourcesService {
*/
Map<String, Object> authorizedFile(User loginUser, Integer userId);
/**
* get resource by id
* @param resourceId resource id
* @return resource
*/
Result<Object> queryResourceById(Integer resourceId);
}

18
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ResourcesServiceImpl.java

@ -815,6 +815,24 @@ public class ResourcesServiceImpl extends BaseServiceImpl implements ResourcesSe
return result;
}
/**
* get resource by id
* @param id resource id
* @return resource
*/
@Override
public Result<Object> queryResourceById(Integer id) {
Result<Object> result = new Result<>();
Resource resource = resourcesMapper.selectById(id);
if (resource == null) {
putMsg(result, Status.RESOURCE_NOT_EXIST);
return result;
}
putMsg(result, Status.SUCCESS);
result.setData(resource);
return result;
}
/**
* view resource file online
*

2
dolphinscheduler-ui-next/src/layouts/content/components/timezone/index.module.scss

@ -15,7 +15,7 @@
* limitations under the License.
*/
.icon {
.icon {
margin: 0 12px;
}

7
dolphinscheduler-ui-next/src/service/modules/resources/index.ts

@ -55,6 +55,13 @@ export function queryResourceById(
})
}
export function queryCurrentResourceById(id: number): any {
return axios({
url: `/resources/${id}/query`,
method: 'get'
})
}
export function createResource(
data: CreateReq & FileNameReq & NameReq & ResourceTypeReq
): any {

3
dolphinscheduler-ui-next/src/service/modules/resources/types.ts

@ -137,5 +137,6 @@ export {
ResourceIdReq,
UdfFuncReq,
ResourceListRes,
ResourceViewRes
ResourceViewRes,
ResourceFile
}

44
dolphinscheduler-ui-next/src/views/projects/workflow/definition/components/use-modal.ts

@ -37,8 +37,8 @@ import {
import { parseTime } from '@/utils/common'
export function useModal(
state: any,
ctx: SetupContext<('update:show' | 'update:row' | 'updateList')[]>
state: any,
ctx: SetupContext<('update:show' | 'update:row' | 'updateList')[]>
) {
const { t } = useI18n()
const router: Router = useRouter()
@ -87,12 +87,12 @@ export function useModal(
state.startForm.processDefinitionCode = code
if (state.startForm.startEndTime) {
const start = format(
new Date(state.startForm.startEndTime[0]),
'yyyy-MM-dd hh:mm:ss'
new Date(state.startForm.startEndTime[0]),
'yyyy-MM-dd hh:mm:ss'
)
const end = format(
new Date(state.startForm.startEndTime[1]),
'yyyy-MM-dd hh:mm:ss'
new Date(state.startForm.startEndTime[1]),
'yyyy-MM-dd hh:mm:ss'
)
state.startForm.scheduleTime = `${start},${end}`
}
@ -104,8 +104,8 @@ export function useModal(
}
}
state.startForm.startParams = !_.isEmpty(startParams)
? JSON.stringify(startParams)
: ''
? JSON.stringify(startParams)
: ''
await startProcessInstance(state.startForm, variables.projectCode)
window.$message.success(t('project.workflow.success'))
@ -157,12 +157,12 @@ export function useModal(
const getTimingData = () => {
const start = format(
parseTime(state.timingForm.startEndTime[0]),
'yyyy-MM-dd hh:mm:ss'
parseTime(state.timingForm.startEndTime[0]),
'yyyy-MM-dd hh:mm:ss'
)
const end = format(
parseTime(state.timingForm.startEndTime[1]),
'yyyy-MM-dd hh:mm:ss'
parseTime(state.timingForm.startEndTime[1]),
'yyyy-MM-dd hh:mm:ss'
)
const data = {
@ -176,9 +176,9 @@ export function useModal(
warningType: state.timingForm.warningType,
processInstancePriority: state.timingForm.processInstancePriority,
warningGroupId:
state.timingForm.warningGroupId === ''
? 0
: state.timingForm.warningGroupId,
state.timingForm.warningGroupId === ''
? 0
: state.timingForm.warningGroupId,
workerGroup: state.timingForm.workerGroup,
environmentCode: state.timingForm.environmentCode
}
@ -215,9 +215,9 @@ export function useModal(
const getStartParamsList = (code: number) => {
queryProcessDefinitionByCode(code, variables.projectCode).then(
(res: any) => {
variables.startParamsList = res.processDefinition.globalParamList
}
(res: any) => {
variables.startParamsList = res.processDefinition.globalParamList
}
)
}
@ -227,12 +227,12 @@ export function useModal(
const projectCode = Number(router.currentRoute.value.params.projectCode)
const start = format(
new Date(state.timingForm.startEndTime[0]),
'yyyy-MM-dd hh:mm:ss'
new Date(state.timingForm.startEndTime[0]),
'yyyy-MM-dd hh:mm:ss'
)
const end = format(
new Date(state.timingForm.startEndTime[1]),
'yyyy-MM-dd hh:mm:ss'
new Date(state.timingForm.startEndTime[1]),
'yyyy-MM-dd hh:mm:ss'
)
const schedule = JSON.stringify({

6
dolphinscheduler-ui-next/src/views/resource/file/folder/use-folder.ts

@ -28,9 +28,9 @@ export function useFolder(state: any) {
const fileStore = useFileStore()
const handleCreateFolder = async (
emit: IEmit,
hideModal: () => void,
resetForm: () => void
emit: IEmit,
hideModal: () => void,
resetForm: () => void
) => {
await state.folderFormRef.validate()

19
dolphinscheduler-ui-next/src/views/resource/file/index.tsx

@ -45,6 +45,9 @@ import ResourceRenameModal from './rename'
import { IRenameFile } from './types'
import type { Router } from 'vue-router'
import styles from './index.module.scss'
import { useFileStore } from '@/store/file/file'
import { queryCurrentResourceById } from '@/service/modules/resources'
import { ResourceFile } from '@/service/modules/resources/types'
export default defineComponent({
name: 'File',
@ -142,6 +145,7 @@ export default defineComponent({
serachRef.value
)
}
const fileStore = useFileStore()
onMounted(() => {
resourceListRef.value = getResourceListState(fileId.value)
@ -150,7 +154,20 @@ export default defineComponent({
watch(
() => router.currentRoute.value.params.id,
// @ts-ignore
() => reload()
() => {
reload()
const currFileId = Number(router.currentRoute.value.params.id) || -1
if (currFileId === -1) {
fileStore.setCurrentDir('/')
} else {
queryCurrentResourceById(currFileId).then((res: ResourceFile) => {
if (res.fullName) {
fileStore.setCurrentDir(res.fullName)
}
})
}
}
)
return {

Loading…
Cancel
Save