diff --git a/services/web/app/views/project/editor/file-tree.pug b/services/web/app/views/project/editor/file-tree.pug index d862cd3b54..d1b037925a 100644 --- a/services/web/app/views/project/editor/file-tree.pug +++ b/services/web/app/views/project/editor/file-tree.pug @@ -349,17 +349,20 @@ script(type='text/ng-template', id='projectLinkedFileModalTemplate') .modal-body div - div.alert.alert-danger(ng-if="state.error") Error + div.alert.alert-danger(ng-if="state.error") Error, something went wrong! div form .form-controls label(for="project-select") Select a Project + span(ng-show="state.inFlight.projects") + |   + i.fa.fa-spinner.fa-spin select.form-control( name="project-select" ng-model="data.selectedProject" ng-disabled="!shouldEnableProjectSelect()" ) - option(value="") No Project Selected + option(value="") - No Project Selected option( ng-repeat="project in data.projects" value="{{ project._id }}" @@ -368,12 +371,15 @@ script(type='text/ng-template', id='projectLinkedFileModalTemplate') br .form-controls label(for="project-entity-select") Select a File + span(ng-show="state.inFlight.entities") + |   + i.fa.fa-spinner.fa-spin select.form-control( name="project-entity-select" ng-model="data.selectedProjectEntity" ng-disabled="!shouldEnableProjectEntitySelect()" ) - option(value="") No File Selected + option(value="") - No File Selected option( ng-repeat="projectEntity in data.projectEntities" value="{{ projectEntity.path }}" @@ -392,7 +398,7 @@ script(type='text/ng-template', id='projectLinkedFileModalTemplate') br .modal-footer - span(ng-show="state.inFlight") + span(ng-show="state.inFlight.create") i.fa.fa-spinner.fa-spin |   button.btn.btn-default( diff --git a/services/web/public/coffee/ide/file-tree/controllers/FileTreeController.coffee b/services/web/public/coffee/ide/file-tree/controllers/FileTreeController.coffee index 4f816efe2a..42f676b0ae 100644 --- a/services/web/public/coffee/ide/file-tree/controllers/FileTreeController.coffee +++ b/services/web/public/coffee/ide/file-tree/controllers/FileTreeController.coffee @@ -224,7 +224,10 @@ define [ selectedProjectEntity: null name: null $scope.state = - inFlight: false + inFlight: + projects: false + entities: false + create: false error: false $scope.$watch 'data.selectedProject', (newVal, oldVal) -> @@ -241,23 +244,25 @@ define [ $scope._resetAfterResponse = (opts) -> isError = opts.err == true - $scope.state.inFlight = false + inFlight = $scope.state.inFlight + inFlight.projects = inFlight.entities = inFlight.create = false $scope.state.error = isError $scope.shouldEnableProjectSelect = () -> state = $scope.state data = $scope.data - return !state.inFlight && data.projects + return !state.inFlight.projects && data.projects $scope.shouldEnableProjectEntitySelect = () -> state = $scope.state data = $scope.data - return !state.inFlight && data.projects && data.selectedProject + return !state.inFlight.projects && !state.inFlight.entities && data.projects && data.selectedProject $scope.shouldEnableCreateButton = () -> state = $scope.state data = $scope.data - return !state.inFlight && + return !state.inFlight.projects && + !state.inFlight.entities && data.projects && data.selectedProject && data.projectEntities && @@ -265,7 +270,7 @@ define [ data.name $scope.getUserProjects = () -> - $scope.state.inFlight = true + $scope.state.inFlight.projects = true ide.$http.get("/user/projects", { _csrf: window.csrfToken }) @@ -278,7 +283,7 @@ define [ $scope._resetAfterResponse(err: true) $scope.getProjectEntities = (project_id) => - $scope.state.inFlight = true + $scope.state.inFlight.entities = true ide.$http.get("/project/#{project_id}/entities", { _csrf: window.csrfToken }) @@ -300,7 +305,7 @@ define [ project = $scope.data.selectedProject path = $scope.data.selectedProjectEntity name = $scope.data.name - $scope.state.inFlight = true + $scope.state.inFlight.create = true ide.fileTreeManager .createLinkedFile(name, parent_folder, 'project_file', { source_project_id: project,