summaryrefslogtreecommitdiff
path: root/assets/js/src/Swimlane.js
diff options
context:
space:
mode:
Diffstat (limited to 'assets/js/src/Swimlane.js')
-rw-r--r--assets/js/src/Swimlane.js67
1 files changed, 67 insertions, 0 deletions
diff --git a/assets/js/src/Swimlane.js b/assets/js/src/Swimlane.js
new file mode 100644
index 00000000..ce18dbfa
--- /dev/null
+++ b/assets/js/src/Swimlane.js
@@ -0,0 +1,67 @@
+function Swimlane() {
+}
+
+Swimlane.prototype.getStorageKey = function() {
+ return "hidden_swimlanes_" + $("#board").data("project-id");
+};
+
+Swimlane.prototype.expand = function(swimlaneId) {
+ var swimlaneIds = this.getAllCollapsed();
+ var index = swimlaneIds.indexOf(swimlaneId);
+
+ if (index > -1) {
+ swimlaneIds.splice(index, 1);
+ }
+
+ localStorage.setItem(this.getStorageKey(), JSON.stringify(swimlaneIds));
+
+ $('.swimlane-row-' + swimlaneId).css('display', 'table-row');
+ $('.show-icon-swimlane-' + swimlaneId).css('display', 'none');
+ $('.hide-icon-swimlane-' + swimlaneId).css('display', 'inline');
+};
+
+Swimlane.prototype.collapse = function(swimlaneId) {
+ var swimlaneIds = this.getAllCollapsed();
+
+ if (swimlaneIds.indexOf(swimlaneId) < 0) {
+ swimlaneIds.push(swimlaneId);
+ localStorage.setItem(this.getStorageKey(), JSON.stringify(swimlaneIds));
+ }
+
+ $('.swimlane-row-' + swimlaneId).css('display', 'none');
+ $('.show-icon-swimlane-' + swimlaneId).css('display', 'inline');
+ $('.hide-icon-swimlane-' + swimlaneId).css('display', 'none');
+};
+
+Swimlane.prototype.isCollapsed = function(swimlaneId) {
+ return this.getAllCollapsed().indexOf(swimlaneId) > -1;
+};
+
+Swimlane.prototype.getAllCollapsed = function() {
+ return JSON.parse(localStorage.getItem(this.getStorageKey())) || [];
+};
+
+Swimlane.prototype.refresh = function() {
+ var swimlaneIds = this.getAllCollapsed();
+
+ for (var i = 0; i < swimlaneIds.length; i++) {
+ this.collapse(swimlaneIds[i]);
+ }
+};
+
+Swimlane.prototype.listen = function() {
+ var self = this;
+
+ $(document).on('click', ".board-swimlane-toggle", function(e) {
+ e.preventDefault();
+
+ var swimlaneId = $(this).data('swimlane-id');
+
+ if (self.isCollapsed(swimlaneId)) {
+ self.expand(swimlaneId);
+ }
+ else {
+ self.collapse(swimlaneId);
+ }
+ });
+};