diff --git a/services/web/app/views/templates.jade b/services/web/app/views/templates.jade index ed86f628db..1463c76941 100644 --- a/services/web/app/views/templates.jade +++ b/services/web/app/views/templates.jade @@ -68,6 +68,7 @@ input.rename.js-rename .dropdown-caret i.icon-chevron-down + .entity-label.label.label-success script(type="text/template")#folderTemplate .entity-list-item(class="entity-{{ type }}", entity-type="{{ type }}", id="{{ id }}") @@ -80,6 +81,7 @@ input.rename.js-rename .dropdown-caret i.icon-chevron-down + .entity-label.label.label-success script(type="text/template")#entityListTemplate .contents diff --git a/services/web/public/coffee/file-tree/EntityView.coffee b/services/web/public/coffee/file-tree/EntityView.coffee index 073dbda345..6b4dae2c7c 100644 --- a/services/web/public/coffee/file-tree/EntityView.coffee +++ b/services/web/public/coffee/file-tree/EntityView.coffee @@ -15,6 +15,7 @@ define [ events: () -> events = {} events["click ##{@model.id} > .js-clickable"] = "parentOnClick" + events["click ##{@model.id} > .entity-label"] = "parentOnClick" events["click .dropdown-caret"] = "showContextMenuFromCaret" events["contextmenu"] = "showContextMenuFromRightClick" return events @@ -29,6 +30,7 @@ define [ @$nameEl = @$(".name") @$inputEl = @$("input.js-rename") @$entityListItemEl = @$el.children(".entity-list-item") + @$labelEl = @$entityListItemEl.children(".entity-label") _makeEditable: () -> if @ide.isAllowedToDoIt "readAndWrite" @@ -48,6 +50,17 @@ define [ @$nameEl.hide() @$inputEl.show() + setLabels: (labels) -> + label = labels[@model.get("id")] + if label? + @$entityListItemEl.addClass("show-label") + @$labelEl.text("±") + return true + else + @$entityListItemEl.removeClass("show-label") + @$labelEl.text("") + return false + select: () -> @selected = true @$entityListItemEl.addClass("selected") diff --git a/services/web/public/coffee/file-tree/FileTreeManager.coffee b/services/web/public/coffee/file-tree/FileTreeManager.coffee index 81d40687a9..cee77eaead 100644 --- a/services/web/public/coffee/file-tree/FileTreeManager.coffee +++ b/services/web/public/coffee/file-tree/FileTreeManager.coffee @@ -277,6 +277,5 @@ define [ entity.collection?.remove(entity) delete @views[entity_id] - - - + setLabels: (labels) -> + @view.setLabels(labels) diff --git a/services/web/public/coffee/file-tree/FileTreeView.coffee b/services/web/public/coffee/file-tree/FileTreeView.coffee index a7439dee08..d06dfe52d4 100644 --- a/services/web/public/coffee/file-tree/FileTreeView.coffee +++ b/services/web/public/coffee/file-tree/FileTreeView.coffee @@ -19,4 +19,7 @@ define [ @rootFolderView = new RootFolderView(model: rootFolder, manager: @manager) entities.append(@rootFolderView.$el) @rootFolderView.render() + + setLabels: (labels) -> + @rootFolderView.setLabels(labels) diff --git a/services/web/public/coffee/file-tree/FolderView.coffee b/services/web/public/coffee/file-tree/FolderView.coffee index 716e1429f2..e8ad803034 100644 --- a/services/web/public/coffee/file-tree/FolderView.coffee +++ b/services/web/public/coffee/file-tree/FolderView.coffee @@ -107,11 +107,13 @@ define [ @$contents.hide() @$toggle.find(".js-open").hide() @$toggle.find(".js-closed").show() + @$entityListItemEl.removeClass("folder-open") showEntries: () -> @$contents.show() @$toggle.find(".js-open").show() @$toggle.find(".js-closed").hide() + @$entityListItemEl.addClass("folder-open") onToggle: (e) -> e.preventDefault() @@ -146,3 +148,17 @@ define [ @manager.showUploadFileModal(@model) }] + setLabels: (labels) -> + showLabel = false + for entity in @views + if entity.setLabels(labels) + showLabel = true + + if showLabel + @$entityListItemEl.addClass("show-label") + @$labelEl.text("±") + return true + else + @$entityListItemEl.removeClass("show-label") + @$labelEl.text("") + return false diff --git a/services/web/public/coffee/track-changes/TrackChangesManager.coffee b/services/web/public/coffee/track-changes/TrackChangesManager.coffee index 393163c781..2b2c11e1e1 100644 --- a/services/web/public/coffee/track-changes/TrackChangesManager.coffee +++ b/services/web/public/coffee/track-changes/TrackChangesManager.coffee @@ -59,7 +59,9 @@ define [ @autoSelectDiff() @changeListView.on "change_diff", (fromIndex, toIndex) => - @selectDocAndUpdateDiff(fromIndex, toIndex) + @findDocsInChange(fromIndex, toIndex) + @updateLabels() + @updateDiff() @showUpgradeView() @@ -97,6 +99,7 @@ define [ @disable() @ide.fileTreeManager.openDoc(@doc_id) @ide.tabManager.show "code" + @resetLabels() autoSelectDiff: () -> if @changes.models.length == 0 @@ -118,17 +121,27 @@ define [ @changeListView.setSelectionRange(fromIndex, 0) @updateDiff() - selectDocAndUpdateDiff: (fromIndex, toIndex) -> - doc_ids = [] + findDocsInChange: (fromIndex, toIndex) -> + @changed_doc_ids = [] for change in @changes.models.slice(toIndex, fromIndex + 1) for doc in change.get("docs") or [] - doc_ids.push doc.id if doc.id not in doc_ids + @changed_doc_ids.push doc.id if doc.id not in @changed_doc_ids - if !@doc_id? or @doc_id not in doc_ids - @doc_id = doc_ids[0] + if !@doc_id? or @doc_id not in @changed_doc_ids + @doc_id = @changed_doc_ids[0] @updateDiff() + updateLabels: () -> + labels = {} + for doc_id in @changed_doc_ids + labels[doc_id] = true + @ide.fileTreeManager.setLabels(labels) + + resetLabels: () -> + @ide.fileTreeManager.setLabels({}) + + updateDiff: () -> fromIndex = @changeListView.selectedFromIndex toIndex = @changeListView.selectedToIndex diff --git a/services/web/public/stylesheets/less/editor.less b/services/web/public/stylesheets/less/editor.less index 31f93bf488..a25e435448 100644 --- a/services/web/public/stylesheets/less/editor.less +++ b/services/web/public/stylesheets/less/editor.less @@ -467,6 +467,9 @@ body.editor { .dropdown-caret { display: none; } + .entity-label { + display: none; + } } .entity-folder { @@ -527,6 +530,28 @@ body.editor { } } } + + .entity-list-item.show-label { + .dropdown-caret { + display: none; + } + .entity-label { + display: block; + position: absolute; + top: 3px; + right: 3px; + font-size: 12px; + line-height: 12px; + padding: 3px 6px; + font-weight: normal; + } + } + + .entity-list-item.folder-open.show-label { + .entity-label { + display: none; + } + } li img, .entity-list-item i { margin: 4px;