[web] Delete old Angular project list code for tags and modals since it has already been migrated to React

GitOrigin-RevId: 2ae2bf45b3b6653ff223e20dca08f6c2f4dced86
This commit is contained in:
M Fahru 2023-09-27 03:20:41 -07:00 committed by Copybot
parent 7b1a728e00
commit bfac201236
6 changed files with 0 additions and 557 deletions

View file

@ -1,257 +0,0 @@
script(type='text/ng-template', id='newTagModalTemplate')
.modal-header
button.close(
type="button"
data-dismiss="modal"
ng-click="cancel()"
aria-label="Close"
)
span(aria-hidden="true") ×
h3 #{translate("create_new_folder")}
.modal-body
form(name="newTagForm", novalidate)
input.form-control(
type="text",
placeholder="New Folder Name",
required,
ng-model="inputs.newTagName",
on-enter="create()",
focus-on="open",
stop-propagation="click"
)
.modal-footer
.modal-footer-left
span.text-danger.error(ng-show="state.error") #{translate("generic_something_went_wrong")}
//- We stop propagation to stop the clicks from closing the
//- 'move to folder' menu.
button.btn.btn-secondary(
ng-click="cancel()"
stop-propagation="click"
) #{translate("cancel")}
button.btn.btn-primary(
ng-disabled="newTagForm.$invalid || state.inflight"
ng-click="create()"
stop-propagation="click"
)
span(ng-show="!state.inflight") #{translate("create")}
span(ng-show="state.inflight") #{translate("creating")}…
script(type='text/ng-template', id='deleteTagModalTemplate')
.modal-header
button.close(
type="button"
data-dismiss="modal"
ng-click="cancel()"
aria-label="Close"
)
span(aria-hidden="true") ×
h3 #{translate("delete_folder")}
.modal-body
p #{translate("about_to_delete_folder")}
ul
li
strong {{tag.name}}
.modal-footer
.modal-footer-left
span.text-danger.error(ng-show="state.error") #{translate("generic_something_went_wrong")}
button.btn.btn-secondary(
ng-click="cancel()"
) #{translate("cancel")}
button.btn.btn-danger(
ng-click="delete()",
ng-disabled="state.inflight"
)
span(ng-show="state.inflight") #{translate("deleting")}…
span(ng-show="!state.inflight") #{translate("delete")}
script(type='text/ng-template', id='renameTagModalTemplate')
.modal-header
button.close(
type="button"
data-dismiss="modal"
ng-click="cancel()"
aria-label="Close"
)
span(aria-hidden="true") ×
h3 #{translate("rename_folder")}
.modal-body
form(name="renameTagForm", novalidate)
input.form-control(
type="text",
placeholder="Tag Name",
ng-model="inputs.tagName",
required,
on-enter="rename()",
focus-on="open"
)
.modal-footer
.modal-footer-left
span.text-danger.error(ng-show="state.error") #{translate("generic_something_went_wrong")}
button.btn.btn-secondary(ng-click="cancel()") #{translate("cancel")}
button.btn.btn-primary(
ng-click="rename()",
ng-disabled="renameTagForm.$invalid || state.inflight"
)
span(ng-show="!state.inflight") #{translate("rename")}
span(ng-show="state.inflight") #{translate("renaming")}…
script(type='text/ng-template', id='renameProjectModalTemplate')
.modal-header
button.close(
type="button"
data-dismiss="modal"
ng-click="cancel()"
aria-label="Close"
)
span(aria-hidden="true") ×
h3 #{translate("rename_project")}
.modal-body
.alert.alert-danger(ng-show="state.error.message") {{state.error.message}}
.alert.alert-danger(ng-show="state.error && !state.error.message") #{translate("generic_something_went_wrong")}
form(name="renameProjectForm", novalidate)
input.form-control(
type="text",
placeholder="Project Name",
ng-model="inputs.projectName",
required,
on-enter="rename()",
focus-on="open"
)
.modal-footer
button.btn.btn-secondary(ng-click="cancel()") #{translate("cancel")}
button.btn.btn-primary(
ng-click="rename()",
ng-disabled="renameProjectForm.$invalid || state.inflight"
)
span(ng-show="!state.inflight") #{translate("rename")}
span(ng-show="state.inflight") #{translate("renaming")}…
script(type='text/ng-template', id='cloneProjectModalTemplate')
.modal-header
button.close(
type="button"
data-dismiss="modal"
ng-click="cancel()"
aria-label="Close"
)
span(aria-hidden="true") ×
h3 #{translate("copy_project")}
.modal-body
.alert.alert-danger(ng-show="state.error.message") {{state.error.message === "invalid element name" ? "#{translate("invalid_element_name")}" : state.error.message}}
.alert.alert-danger(ng-show="state.error && !state.error.message") #{translate("generic_something_went_wrong")}
form(name="cloneProjectForm", novalidate)
.form-group
label #{translate("new_name")}
input.form-control(
type="text",
placeholder="New Project Name",
required,
ng-model="inputs.projectName",
on-enter="clone()",
focus-on="open"
)
.modal-footer
button.btn.btn-secondary(
ng-disabled="state.inflight"
ng-click="cancel()"
) #{translate("cancel")}
button.btn.btn-primary(
ng-disabled="cloneProjectForm.$invalid || state.inflight"
ng-click="clone()"
)
span(ng-hide="state.inflight") #{translate("copy")}
span(ng-show="state.inflight") #{translate("copying")} …
script(type='text/ng-template', id='newProjectModalTemplate')
.modal-header
button.close(
type="button"
data-dismiss="modal"
ng-click="cancel()"
aria-label="Close"
)
span(aria-hidden="true") ×
h3 #{translate("new_project")}
.modal-body
.alert.alert-danger(ng-show="state.error.message") {{state.error.message}}
.alert.alert-danger(ng-show="state.error && !state.error.message") #{translate("generic_something_went_wrong")}
form(novalidate, name="newProjectForm")
input.form-control(
type="text",
placeholder="Project Name",
required,
ng-model="inputs.projectName",
on-enter="create()",
focus-on="open"
)
.modal-footer
button.btn.btn-secondary(
ng-disabled="state.inflight"
ng-click="cancel()"
) #{translate("cancel")}
button.btn.btn-primary(
ng-disabled="newProjectForm.$invalid || state.inflight"
ng-click="create()"
)
span(ng-hide="state.inflight") #{translate("create")}
span(ng-show="state.inflight") #{translate("creating")}…
script(type='text/ng-template', id='archiveTrashLeaveOrDeleteProjectsModalTemplate')
.modal-header
button.close(
type="button"
data-dismiss="modal"
ng-click="cancel()"
aria-label="Close"
)
span(aria-hidden="true") ×
h3(ng-if="action === 'archive'") #{translate("archive_projects")}
h3(ng-if="action === 'trash'") #{translate("trash_projects")}
h3(ng-if="action === 'leave'") #{translate("leave_projects")}
h3(ng-if="action === 'delete'") #{translate("delete_projects")}
h3(ng-if="action === 'leaveOrDelete'") #{translate("delete_and_leave_projects")}
.modal-body
div(ng-if="action !== 'leaveOrDelete'")
p(ng-if="action === 'archive'") #{translate("about_to_archive_projects")}
p(ng-if="action === 'trash'") #{translate("about_to_trash_projects")}
p(ng-if="action === 'leave'") #{translate("about_to_leave_projects")}
p(ng-if="action === 'delete'") #{translate("about_to_delete_projects")}
ul
li(ng-repeat="project in projects | orderBy:'name'")
strong {{project.name}}
div(ng-if="action === 'archive'")
p #{translate("archiving_projects_wont_affect_collaborators")}
|  
a(
href="https://www.overleaf.com/blog/new-feature-using-archive-and-trash-to-keep-your-projects-organized"
target="_blank"
) #{translate("find_out_more_nt")}
div(ng-if="action === 'trash'")
p #{translate("trashing_projects_wont_affect_collaborators")}
|  
a(
href="https://www.overleaf.com/blog/new-feature-using-archive-and-trash-to-keep-your-projects-organized"
target="_blank"
) #{translate("find_out_more_nt")}
.project-action-alert.alert.alert-warning(ng-if="action === 'leave' || action === 'delete'")
i.fa.fa-fw.fa-exclamation-triangle
.project-action-alert-msg #{translate("this_action_cannot_be_undone")}
div(ng-if="action === 'leaveOrDelete'")
p #{translate("about_to_delete_projects")}
ul
li(ng-repeat="project in projects | filter:{accessLevel: 'owner'} | orderBy:'name'")
strong {{project.name}}
p #{translate("about_to_leave_projects")}
ul
li(ng-repeat="project in projects | filter:{accessLevel: '!owner'} | orderBy:'name'")
strong {{project.name}}
.project-action-alert.alert.alert-warning
i.fa.fa-fw.fa-exclamation-triangle
.project-action-alert-msg #{translate("this_action_cannot_be_undone")}
.modal-footer
button.btn.btn-secondary(
ng-click="cancel()"
) #{translate("cancel")}
button.btn.btn-danger(
ng-click="confirm()"
) #{translate("confirm")}

View file

@ -9,7 +9,6 @@
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
*/
import './main/token-access'
import './main/project-list/index'
import './main/clear-sessions'
import './main/account-upgrade-angular'
import './main/plans'

View file

@ -1,5 +0,0 @@
// TODO: This file was created by bulk-decaffeinate.
// Fix any style issues and re-enable lint.
import './modal-controllers'
import './tag-controllers'
import '../../services/queued-http'

View file

@ -1,63 +0,0 @@
/* eslint-disable
n/handle-callback-err,
max-len,
no-return-assign,
*/
// TODO: This file was created by bulk-decaffeinate.
// Fix any style issues and re-enable lint.
/*
* decaffeinate suggestions:
* DS102: Remove unnecessary code created because of implicit returns
* DS207: Consider shorter variations of null checks
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
*/
import App from '../../base'
App.controller(
'CloneProjectModalController',
function ($scope, $modalInstance, $timeout, project) {
$scope.inputs = { projectName: project.name + ' (Copy)' }
$scope.state = {
inflight: false,
error: false,
}
$modalInstance.opened.then(() =>
$timeout(() => $scope.$broadcast('open'), 200)
)
$scope.clone = function () {
$scope.state.inflight = true
return $scope
.cloneProject(project, $scope.inputs.projectName)
.then(function () {
$scope.state.inflight = false
$scope.state.error = false
return $modalInstance.close()
})
.catch(function (response) {
const { data, status } = response
$scope.state.inflight = false
if (status === 400) {
return ($scope.state.error = { message: data })
} else {
return ($scope.state.error = true)
}
})
}
return ($scope.cancel = () => $modalInstance.dismiss('cancel'))
}
)
App.controller(
'ArchiveTrashLeaveOrDeleteProjectsModalController',
function ($scope, $modalInstance, $timeout, projects, action) {
$scope.projects = projects
$scope.action = action
$scope.confirm = () => $modalInstance.close({ projects, action })
$scope.cancel = () => $modalInstance.dismiss('cancel')
}
)

View file

@ -1,226 +0,0 @@
import App from '../../base'
import ColorManager from '../../ide/colors/ColorManager'
App.controller('TagListController', function ($scope, $modal) {
$scope.filterProjects = function (filter = 'all') {
$scope._clearTags()
$scope.setFilter(filter)
}
$scope._clearTags = () =>
$scope.tags.forEach(tag => {
tag.selected = false
})
$scope.selectTag = function (tag) {
$scope._clearTags()
tag.selected = true
$scope.setFilter('tag')
}
$scope.selectUntagged = function () {
$scope._clearTags()
$scope.setFilter('untagged')
}
$scope.countProjectsForTag = function (tag) {
return tag.project_ids.reduce((acc, projectId) => {
const project = $scope.getProjectById(projectId)
// There is a bug where the tag is not cleaned up when you leave a
// project, so tag.project_ids can contain a project that the user can
// no longer access. If the project cannot be found, ignore it
if (!project) return acc
// Ignore archived projects as they are not shown in the filter
if (!(project.archived || project.trashed)) {
return acc + 1
} else {
return acc
}
}, 0)
}
$scope.getHueForTagId = tagId => ColorManager.getHueForTagId(tagId)
$scope.deleteTag = function (tag) {
const modalInstance = $modal.open({
templateUrl: 'deleteTagModalTemplate',
controller: 'DeleteTagModalController',
resolve: {
tag() {
return tag
},
},
})
modalInstance.result.then(function () {
// Remove tag from projects
for (const project of $scope.projects) {
if (!project.tags) {
project.tags = []
}
const index = project.tags.indexOf(tag)
if (index > -1) {
project.tags.splice(index, 1)
}
}
// Remove tag in place to update the state everywhere
$scope.tags.splice($scope.tags.indexOf(tag), 1)
})
}
$scope.renameTag = function (tag) {
const modalInstance = $modal.open({
templateUrl: 'renameTagModalTemplate',
controller: 'RenameTagModalController',
resolve: {
tag() {
return tag
},
},
})
modalInstance.result.then(newName => (tag.name = newName))
}
})
App.controller('TagDropdownItemController', function ($scope) {
$scope.recalculateProjectsInTag = function () {
let partialSelection
$scope.areSelectedProjectsInTag = false
for (const projectId of $scope.getSelectedProjectIds()) {
if ($scope.tag.project_ids.includes(projectId)) {
$scope.areSelectedProjectsInTag = true
} else {
partialSelection = true
}
}
if ($scope.areSelectedProjectsInTag && partialSelection) {
$scope.areSelectedProjectsInTag = 'partial'
}
}
$scope.addOrRemoveProjectsFromTag = function () {
if ($scope.areSelectedProjectsInTag === true) {
$scope.removeSelectedProjectsFromTag($scope.tag)
$scope.areSelectedProjectsInTag = false
} else if (
$scope.areSelectedProjectsInTag === false ||
$scope.areSelectedProjectsInTag === 'partial'
) {
$scope.addSelectedProjectsToTag($scope.tag)
$scope.areSelectedProjectsInTag = true
}
}
$scope.$watch('selectedProjects', () => $scope.recalculateProjectsInTag())
$scope.recalculateProjectsInTag()
})
App.controller(
'NewTagModalController',
function ($scope, $modalInstance, $timeout, $http) {
$scope.inputs = { newTagName: '' }
$scope.state = {
inflight: false,
error: false,
}
$modalInstance.opened.then(() =>
$timeout(() => $scope.$broadcast('open'), 200)
)
$scope.create = function () {
const name = $scope.inputs.newTagName
$scope.state.inflight = true
$scope.state.error = false
$http
.post('/tag', {
_csrf: window.csrfToken,
name,
})
.then(function (response) {
const { data } = response
$scope.state.inflight = false
$modalInstance.close(data)
})
.catch(function () {
$scope.state.inflight = false
$scope.state.error = true
})
}
$scope.cancel = () => $modalInstance.dismiss('cancel')
}
)
App.controller(
'RenameTagModalController',
function ($scope, $modalInstance, $timeout, $http, tag) {
$scope.inputs = { tagName: tag.name }
$scope.state = {
inflight: false,
error: false,
}
$modalInstance.opened.then(() =>
$timeout(() => $scope.$broadcast('open'), 200)
)
$scope.rename = function () {
const name = $scope.inputs.tagName
$scope.state.inflight = true
$scope.state.error = false
return $http
.post(`/tag/${tag._id}/rename`, {
_csrf: window.csrfToken,
name,
})
.then(function () {
$scope.state.inflight = false
$modalInstance.close(name)
})
.catch(function () {
$scope.state.inflight = false
$scope.state.error = true
})
}
$scope.cancel = () => $modalInstance.dismiss('cancel')
}
)
export default App.controller(
'DeleteTagModalController',
function ($scope, $modalInstance, $http, tag) {
$scope.tag = tag
$scope.state = {
inflight: false,
error: false,
}
$scope.delete = function () {
$scope.state.inflight = true
$scope.state.error = false
return $http({
method: 'DELETE',
url: `/tag/${tag._id}`,
headers: {
'X-CSRF-Token': window.csrfToken,
},
})
.then(function () {
$scope.state.inflight = false
$modalInstance.close()
})
.catch(function () {
$scope.state.inflight = false
$scope.state.error = true
})
}
$scope.cancel = () => $modalInstance.dismiss('cancel')
}
)

View file

@ -18,7 +18,6 @@
"a_more_comprehensive_list_of_keyboard_shortcuts": "A more comprehensive list of keyboard shortcuts can be found in <0>this __appName__ project template</0>",
"about": "About",
"about_to_archive_projects": "You are about to archive the following projects:",
"about_to_delete_folder": "You are about to delete the following folders (any projects in them will not be deleted):",
"about_to_delete_projects": "You are about to delete the following projects:",
"about_to_delete_tag": "You are about to delete the following tag (any projects in them will not be deleted):",
"about_to_delete_the_following_project": "You are about to delete the following project",
@ -339,7 +338,6 @@
"create_first_admin_account": "Create the first Admin account",
"create_first_project": "Create First Project",
"create_new_account": "Create new account",
"create_new_folder": "Create New Folder",
"create_new_subscription": "Create New Subscription",
"create_new_tag": "Create new tag",
"create_project_in_github": "Create a GitHub repository",
@ -382,7 +380,6 @@
"delete_authentication_token": "Delete Authentication token",
"delete_authentication_token_info": "Youre about to delete a Git authentication token. If you do, it can no longer be used to authenticate your identity when performing Git operations.",
"delete_figure": "Delete figure",
"delete_folder": "Delete Folder",
"delete_projects": "Delete Projects",
"delete_row_or_column": "Delete row or column",
"delete_table": "Delete table",
@ -846,7 +843,6 @@
"integrations": "Integrations",
"interested_in": "Interested in",
"interested_in_cheaper_personal_plan": "Would you be interested in the cheaper <0>__price__</0> Personal plan?",
"invalid_element_name": "Could not copy your project because of filenames containing invalid characters\r\n(such as asterisks, slashes or control characters). Please rename the files and\r\ntry again.",
"invalid_email": "An email address is invalid",
"invalid_file_name": "Invalid File Name",
"invalid_filename": "Upload failed: check that the file name doesnt contain special characters, trailing/leading whitespace or more than __nameLimit__ characters",
@ -1435,7 +1431,6 @@
"removed": "removed",
"removing": "Removing",
"rename": "Rename",
"rename_folder": "Rename Folder",
"rename_project": "Rename Project",
"renaming": "Renaming",
"reopen": "Re-open",