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 3 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); Map<String, Object> result = resourceService.authorizedUDFFunction(loginUser, userId);
return returnDataList(result); 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); 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; 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 * view resource file online
* *

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

@ -15,7 +15,7 @@
* limitations under the License. * limitations under the License.
*/ */
.icon { .icon {
margin: 0 12px; 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( export function createResource(
data: CreateReq & FileNameReq & NameReq & ResourceTypeReq data: CreateReq & FileNameReq & NameReq & ResourceTypeReq
): any { ): any {

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

@ -137,5 +137,6 @@ export {
ResourceIdReq, ResourceIdReq,
UdfFuncReq, UdfFuncReq,
ResourceListRes, 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' import { parseTime } from '@/utils/common'
export function useModal( export function useModal(
state: any, state: any,
ctx: SetupContext<('update:show' | 'update:row' | 'updateList')[]> ctx: SetupContext<('update:show' | 'update:row' | 'updateList')[]>
) { ) {
const { t } = useI18n() const { t } = useI18n()
const router: Router = useRouter() const router: Router = useRouter()
@ -87,12 +87,12 @@ export function useModal(
state.startForm.processDefinitionCode = code state.startForm.processDefinitionCode = code
if (state.startForm.startEndTime) { if (state.startForm.startEndTime) {
const start = format( const start = format(
new Date(state.startForm.startEndTime[0]), new Date(state.startForm.startEndTime[0]),
'yyyy-MM-dd hh:mm:ss' 'yyyy-MM-dd hh:mm:ss'
) )
const end = format( const end = format(
new Date(state.startForm.startEndTime[1]), new Date(state.startForm.startEndTime[1]),
'yyyy-MM-dd hh:mm:ss' 'yyyy-MM-dd hh:mm:ss'
) )
state.startForm.scheduleTime = `${start},${end}` state.startForm.scheduleTime = `${start},${end}`
} }
@ -104,8 +104,8 @@ export function useModal(
} }
} }
state.startForm.startParams = !_.isEmpty(startParams) state.startForm.startParams = !_.isEmpty(startParams)
? JSON.stringify(startParams) ? JSON.stringify(startParams)
: '' : ''
await startProcessInstance(state.startForm, variables.projectCode) await startProcessInstance(state.startForm, variables.projectCode)
window.$message.success(t('project.workflow.success')) window.$message.success(t('project.workflow.success'))
@ -157,12 +157,12 @@ export function useModal(
const getTimingData = () => { const getTimingData = () => {
const start = format( const start = format(
parseTime(state.timingForm.startEndTime[0]), parseTime(state.timingForm.startEndTime[0]),
'yyyy-MM-dd hh:mm:ss' 'yyyy-MM-dd hh:mm:ss'
) )
const end = format( const end = format(
parseTime(state.timingForm.startEndTime[1]), parseTime(state.timingForm.startEndTime[1]),
'yyyy-MM-dd hh:mm:ss' 'yyyy-MM-dd hh:mm:ss'
) )
const data = { const data = {
@ -176,9 +176,9 @@ export function useModal(
warningType: state.timingForm.warningType, warningType: state.timingForm.warningType,
processInstancePriority: state.timingForm.processInstancePriority, processInstancePriority: state.timingForm.processInstancePriority,
warningGroupId: warningGroupId:
state.timingForm.warningGroupId === '' state.timingForm.warningGroupId === ''
? 0 ? 0
: state.timingForm.warningGroupId, : state.timingForm.warningGroupId,
workerGroup: state.timingForm.workerGroup, workerGroup: state.timingForm.workerGroup,
environmentCode: state.timingForm.environmentCode environmentCode: state.timingForm.environmentCode
} }
@ -215,9 +215,9 @@ export function useModal(
const getStartParamsList = (code: number) => { const getStartParamsList = (code: number) => {
queryProcessDefinitionByCode(code, variables.projectCode).then( queryProcessDefinitionByCode(code, variables.projectCode).then(
(res: any) => { (res: any) => {
variables.startParamsList = res.processDefinition.globalParamList variables.startParamsList = res.processDefinition.globalParamList
} }
) )
} }
@ -227,12 +227,12 @@ export function useModal(
const projectCode = Number(router.currentRoute.value.params.projectCode) const projectCode = Number(router.currentRoute.value.params.projectCode)
const start = format( const start = format(
new Date(state.timingForm.startEndTime[0]), new Date(state.timingForm.startEndTime[0]),
'yyyy-MM-dd hh:mm:ss' 'yyyy-MM-dd hh:mm:ss'
) )
const end = format( const end = format(
new Date(state.timingForm.startEndTime[1]), new Date(state.timingForm.startEndTime[1]),
'yyyy-MM-dd hh:mm:ss' 'yyyy-MM-dd hh:mm:ss'
) )
const schedule = JSON.stringify({ 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 fileStore = useFileStore()
const handleCreateFolder = async ( const handleCreateFolder = async (
emit: IEmit, emit: IEmit,
hideModal: () => void, hideModal: () => void,
resetForm: () => void resetForm: () => void
) => { ) => {
await state.folderFormRef.validate() 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 { IRenameFile } from './types'
import type { Router } from 'vue-router' import type { Router } from 'vue-router'
import styles from './index.module.scss' 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({ export default defineComponent({
name: 'File', name: 'File',
@ -142,6 +145,7 @@ export default defineComponent({
serachRef.value serachRef.value
) )
} }
const fileStore = useFileStore()
onMounted(() => { onMounted(() => {
resourceListRef.value = getResourceListState(fileId.value) resourceListRef.value = getResourceListState(fileId.value)
@ -150,7 +154,20 @@ export default defineComponent({
watch( watch(
() => router.currentRoute.value.params.id, () => router.currentRoute.value.params.id,
// @ts-ignore // @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 { return {

Loading…
Cancel
Save