diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView.java index 0b324db25..7c6d70722 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView.java @@ -103,6 +103,12 @@ public boolean collectAnonymousUsageStatistics() { return descriptor.getPermissionToCollectAnonymousUsageStatistics(); } + + @SuppressWarnings("unused") // used in .jelly + public String getFilterRegex() { + return currentConfig().getFilterRegex(); + } + @Override protected void submit(StaplerRequest req) throws ServletException, IOException, FormException { super.submit(req); @@ -113,7 +119,11 @@ protected void submit(StaplerRequest req) throws ServletException, IOException, String requestedOrdering = req.getParameter("order"); title = req.getParameter("title"); + String filterRegex = req.getParameter("filterRegex"); + currentConfig().setStripCommonPrefix(json.optBoolean("stripPrefix",false)); + currentConfig().setStripCommonSuffix(json.optBoolean("stripSuffix",false)); + currentConfig().setFilterRegex(filterRegex); currentConfig().setDisplayCommitters(json.optBoolean("displayCommitters", true)); try { diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/Config.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/Config.java index 83ebd2e7b..2fef28df2 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/Config.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/Config.java @@ -10,7 +10,30 @@ public class Config { - private boolean displayCommitters; + private boolean displayCommitters,shouldStripCommonPrefix,shouldStripCommonSuffix; + private String filterRegex; + + public void setStripCommonPrefix(boolean strip){ + this.shouldStripCommonPrefix = strip; + } + + public void setStripCommonSuffix(boolean strip){ + this.shouldStripCommonSuffix = strip; + } + public Boolean ShouldStripCommonPrefix(){ + return getOrElse(shouldStripCommonPrefix,false); + } + public Boolean ShouldStripCommonSuffix(){ + return getOrElse(shouldStripCommonSuffix,false); + } + + public void setFilterRegex(String filterRegex) { + this.filterRegex = filterRegex; + } + + public String getFilterRegex() { + return getOrElse(this.filterRegex,""); + } public static Config defaultConfig() { return new Config(); diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViews.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViews.java index f185ade83..da51f3ced 100644 --- a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViews.java +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/JobViews.java @@ -2,7 +2,10 @@ import com.smartcodeltd.jenkinsci.plugins.buildmonitor.facade.StaticJenkinsAPIs; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.*; +import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.StripMostCommons.StripMostCommonPrefixConfig; +import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.StripMostCommons.StripMostCommonSuffixConfig; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.headline.HeadlineConfig; +import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.jobNameFilter.JobNameFilterConfig; import hudson.model.Job; import java.util.List; @@ -30,8 +33,11 @@ public JobView viewOf(Job job) { // todo: a more elegant way of assembling the features would be nice viewFeatures.add(new HasHeadline(new HeadlineConfig(config.shouldDisplayCommitters()))); + viewFeatures.add(new shouldStripMostCommonPrefix(new StripMostCommonPrefixConfig(config.ShouldStripCommonPrefix()))); + viewFeatures.add(new shouldStripMostCommonSuffix(new StripMostCommonSuffixConfig(config.ShouldStripCommonSuffix()))); viewFeatures.add(new KnowsLastCompletedBuildDetails()); viewFeatures.add(new KnowsCurrentBuildsDetails()); + viewFeatures.add(new HasNameFilter(new JobNameFilterConfig(config.getFilterRegex()))); if (jenkins.hasPlugin(Claim)) { viewFeatures.add(new CanBeClaimed()); diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasNameFilter.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasNameFilter.java new file mode 100644 index 000000000..02e7afec1 --- /dev/null +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/HasNameFilter.java @@ -0,0 +1,29 @@ +package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features; + +import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView; +import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.jobNameFilter.*; + +public class HasNameFilter implements Feature { + private JobView job; + private JobNameFilterConfig config; + + public HasNameFilter(JobNameFilterConfig config) { + this.config = config; + } + + @Override + public HasNameFilter of(JobView jobView) { + this.job = jobView; + + return this; + } + + @Override + public JobNameFiltered asJson() { + JobNameFilterer nameFilterer = new JobNameFilterer(job.name()); + + nameFilterer = nameFilterer.filterRegex(config.regex); + + return new JobNameFiltered(nameFilterer.getJobName()); + } +} \ No newline at end of file diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/StripMostCommons/StripMostCommonPrefix.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/StripMostCommons/StripMostCommonPrefix.java new file mode 100644 index 000000000..115224fb8 --- /dev/null +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/StripMostCommons/StripMostCommonPrefix.java @@ -0,0 +1,17 @@ +package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.StripMostCommons; + +/** + * Contains methods used to filter the job name with specified prefix, suffix and regex + */ +public class StripMostCommonPrefix { + private StripMostCommonPrefixConfig conf; + + public StripMostCommonPrefix(StripMostCommonPrefixConfig conf) { + this.conf = conf; + } + + public boolean getPrefix(){ + //Boolean.toString(conf.prefix) + return conf.prefix; + } +} \ No newline at end of file diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/StripMostCommons/StripMostCommonPrefixConfig.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/StripMostCommons/StripMostCommonPrefixConfig.java new file mode 100644 index 000000000..ada9407ae --- /dev/null +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/StripMostCommons/StripMostCommonPrefixConfig.java @@ -0,0 +1,12 @@ +package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.StripMostCommons; + +/** + * @author Vincent & Robert + */ +public class StripMostCommonPrefixConfig { + public final Boolean prefix; + + public StripMostCommonPrefixConfig(Boolean prefix) { + this.prefix = prefix; + } +} \ No newline at end of file diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/StripMostCommons/StripMostCommonSuffix.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/StripMostCommons/StripMostCommonSuffix.java new file mode 100644 index 000000000..b61214347 --- /dev/null +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/StripMostCommons/StripMostCommonSuffix.java @@ -0,0 +1,17 @@ +package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.StripMostCommons; + +/** + * Contains methods used to filter the job name with specified prefix, suffix and regex + */ +public class StripMostCommonSuffix { + private StripMostCommonSuffixConfig conf; + + public StripMostCommonSuffix(StripMostCommonSuffixConfig conf) { + this.conf = conf; + } + + + public boolean getSuffix(){ + return conf.suffix; + } +} \ No newline at end of file diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/StripMostCommons/StripMostCommonSuffixConfig.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/StripMostCommons/StripMostCommonSuffixConfig.java new file mode 100644 index 000000000..221e6a0e6 --- /dev/null +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/StripMostCommons/StripMostCommonSuffixConfig.java @@ -0,0 +1,12 @@ +package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.StripMostCommons; + +/** + * @author Vincent & Robert + */ +public class StripMostCommonSuffixConfig { + public final Boolean suffix; + + public StripMostCommonSuffixConfig(Boolean suffix) { + this.suffix = suffix; + } +} \ No newline at end of file diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/StripMostCommons/StrippedMostCommonPrefix.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/StripMostCommons/StrippedMostCommonPrefix.java new file mode 100644 index 000000000..15ceeeaef --- /dev/null +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/StripMostCommons/StrippedMostCommonPrefix.java @@ -0,0 +1,23 @@ +package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.StripMostCommons; + +import org.codehaus.jackson.annotate.JsonValue; + +/** + * @author Vincent & Robert + */ +public class StrippedMostCommonPrefix { + private final boolean value; + + public StrippedMostCommonPrefix(boolean value) { + this.value = value; + } + + @JsonValue + public boolean value() { + return value; + } + + public StrippedMostCommonPrefix asJson() { + return this; + } +} \ No newline at end of file diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/StripMostCommons/StrippedMostCommonSuffix.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/StripMostCommons/StrippedMostCommonSuffix.java new file mode 100644 index 000000000..0b65ec7d0 --- /dev/null +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/StripMostCommons/StrippedMostCommonSuffix.java @@ -0,0 +1,23 @@ +package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.StripMostCommons; + +import org.codehaus.jackson.annotate.JsonValue; + +/** + * @author Vincent & Robert + */ +public class StrippedMostCommonSuffix { + private final boolean value; + + public StrippedMostCommonSuffix(boolean value) { + this.value = value; + } + + @JsonValue + public boolean value() { + return value; + } + + public StrippedMostCommonSuffix asJson() { + return this; + } +} \ No newline at end of file diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/jobNameFilter/JobNameFilterConfig.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/jobNameFilter/JobNameFilterConfig.java new file mode 100644 index 000000000..bfb2a8aa5 --- /dev/null +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/jobNameFilter/JobNameFilterConfig.java @@ -0,0 +1,12 @@ +package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.jobNameFilter; + +/** + * @author Vincent & Robert + */ +public class JobNameFilterConfig { + public final String regex; + + public JobNameFilterConfig( String regex) { + this.regex = regex; + } +} \ No newline at end of file diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/jobNameFilter/JobNameFiltered.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/jobNameFilter/JobNameFiltered.java new file mode 100644 index 000000000..1621b4886 --- /dev/null +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/jobNameFilter/JobNameFiltered.java @@ -0,0 +1,23 @@ +package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.jobNameFilter; + +import org.codehaus.jackson.annotate.JsonValue; + +/** + * @author Vincent & Robert + */ +public class JobNameFiltered { + private final String value; + + public JobNameFiltered(String value) { + this.value = value; + } + + @JsonValue + public String value() { + return value; + } + + public JobNameFiltered asJson() { + return this; + } +} \ No newline at end of file diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/jobNameFilter/JobNameFilterer.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/jobNameFilter/JobNameFilterer.java new file mode 100644 index 000000000..13ff5fe8f --- /dev/null +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/jobNameFilter/JobNameFilterer.java @@ -0,0 +1,33 @@ +package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.jobNameFilter; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * Contains methods used to filter the job name with specified prefix, suffix and regex + */ +public class JobNameFilterer { + private String jobName; + + public JobNameFilterer(String jobName) { + this.jobName = jobName; + } + + public JobNameFilterer filterRegex(String regex) { + if (regex.length() <= 0) { + return this; + } + + String filteredName; + + Pattern p = Pattern.compile(regex); + Matcher m = p.matcher(jobName); + filteredName = m.replaceAll(""); + + return new JobNameFilterer(filteredName); + } + + public String getJobName() { + return jobName; + } +} \ No newline at end of file diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/shouldStripMostCommonPrefix.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/shouldStripMostCommonPrefix.java new file mode 100644 index 000000000..881703f69 --- /dev/null +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/shouldStripMostCommonPrefix.java @@ -0,0 +1,29 @@ +package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features; + +import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView; +import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.StripMostCommons.StripMostCommonPrefix; +import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.StripMostCommons.StripMostCommonPrefixConfig; +import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.StripMostCommons.StrippedMostCommonPrefix; + +public class shouldStripMostCommonPrefix implements Feature { + private JobView job; + private StripMostCommonPrefixConfig config; + + + public shouldStripMostCommonPrefix(StripMostCommonPrefixConfig stripMostCommonPrefixConfig) { + this.config = stripMostCommonPrefixConfig; + } + + @Override + public shouldStripMostCommonPrefix of(JobView jobView) { + this.job = jobView; + + return this; + } + + @Override + public StrippedMostCommonPrefix asJson() { + StripMostCommonPrefix coms = new StripMostCommonPrefix(config); + return new StrippedMostCommonPrefix(coms.getPrefix()); + } +} \ No newline at end of file diff --git a/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/shouldStripMostCommonSuffix.java b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/shouldStripMostCommonSuffix.java new file mode 100644 index 000000000..3b4202313 --- /dev/null +++ b/build-monitor-plugin/src/main/java/com/smartcodeltd/jenkinsci/plugins/buildmonitor/viewmodel/features/shouldStripMostCommonSuffix.java @@ -0,0 +1,27 @@ +package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features; + +import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView; +import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features.StripMostCommons.*; + +public class shouldStripMostCommonSuffix implements Feature { + private JobView job; + private StripMostCommonSuffixConfig config; + + + public shouldStripMostCommonSuffix(StripMostCommonSuffixConfig Strip) { + this.config = Strip; + } + + @Override + public shouldStripMostCommonSuffix of(JobView jobView) { + this.job = jobView; + + return this; + } + + @Override + public StrippedMostCommonSuffix asJson() { + StripMostCommonSuffix coms = new StripMostCommonSuffix(config); + return new StrippedMostCommonSuffix(coms.getSuffix()); + } +} \ No newline at end of file diff --git a/build-monitor-plugin/src/main/resources/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView/configure-entries.jelly b/build-monitor-plugin/src/main/resources/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView/configure-entries.jelly index 59a277a47..ace420f8c 100644 --- a/build-monitor-plugin/src/main/resources/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView/configure-entries.jelly +++ b/build-monitor-plugin/src/main/resources/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView/configure-entries.jelly @@ -48,6 +48,18 @@ + + + + + + + + + + + + diff --git a/build-monitor-plugin/src/main/resources/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView/help-filterNamePrefix.html b/build-monitor-plugin/src/main/resources/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView/help-filterNamePrefix.html new file mode 100644 index 000000000..216fa1dd7 --- /dev/null +++ b/build-monitor-plugin/src/main/resources/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView/help-filterNamePrefix.html @@ -0,0 +1,3 @@ +
+ Removes Prefix from job name on build monitor. +
\ No newline at end of file diff --git a/build-monitor-plugin/src/main/resources/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView/help-filterNameRegex.html b/build-monitor-plugin/src/main/resources/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView/help-filterNameRegex.html new file mode 100644 index 000000000..b1fe93f76 --- /dev/null +++ b/build-monitor-plugin/src/main/resources/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView/help-filterNameRegex.html @@ -0,0 +1,3 @@ +
+ Removes matching regex from job name on build monitor. +
\ No newline at end of file diff --git a/build-monitor-plugin/src/main/resources/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView/help-filterNameSuffix.html b/build-monitor-plugin/src/main/resources/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView/help-filterNameSuffix.html new file mode 100644 index 000000000..70b71c3b3 --- /dev/null +++ b/build-monitor-plugin/src/main/resources/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView/help-filterNameSuffix.html @@ -0,0 +1,3 @@ +
+ Removes Suffix from job name on build monitor. +
\ No newline at end of file diff --git a/build-monitor-plugin/src/main/resources/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView/widgets.jelly b/build-monitor-plugin/src/main/resources/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView/widgets.jelly index fcd1badfe..ce8e55190 100644 --- a/build-monitor-plugin/src/main/resources/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView/widgets.jelly +++ b/build-monitor-plugin/src/main/resources/com/smartcodeltd/jenkinsci/plugins/buildmonitor/BuildMonitorView/widgets.jelly @@ -18,8 +18,20 @@

{{project.name}} + href="{{project.url}}"> + {{project.name}} + + +

+

{{project}}

  • {{ project.headline }}
  • -
\ No newline at end of file + diff --git a/build-monitor-plugin/src/main/webapp/scripts/controllers.js b/build-monitor-plugin/src/main/webapp/scripts/controllers.js index 0e0e8dfae..70910394b 100644 --- a/build-monitor-plugin/src/main/webapp/scripts/controllers.js +++ b/build-monitor-plugin/src/main/webapp/scripts/controllers.js @@ -24,6 +24,8 @@ angular. return fetchJobViews().then(function (response) { $scope.jobs = response.data.data; + //required. + getFreqOfJobs($scope.jobs); $rootScope.$broadcast('jenkins:data-fetched', response.data.meta); @@ -37,6 +39,55 @@ angular. $scope.fontSize = fontSizeFor($scope.jobs, newColumnCount); }); + /* + TODO extract into widget. + */ + function getFreqOfJobs(itemsOnScreen){ + var namesOnScreen = []; + for(var i = 0; i < itemsOnScreen.length;i++){ + namesOnScreen.push(itemsOnScreen[i].jobNameFiltered); + $scope.jobs[i].name = itemsOnScreen[i].jobNameFiltered; + } + var sharedStartString,sharedEndString; + + if($scope.jobs[0].strippedMostCommonPrefix && $scope.jobs[0].strippedMostCommonPrefix != null){ + sharedStartString = sharedStart(namesOnScreen); + for(var i = 0; i < namesOnScreen.length; i++){ + $scope.jobs[i].name = namesOnScreen[i].substring(sharedStartString.length,namesOnScreen[i].length); + } + + } + if($scope.jobs[0].strippedMostCommonSuffix && $scope.jobs[0].strippedMostCommonSuffix != null){ + sharedEndString = sharedEnd(namesOnScreen); + for(var i = 0; i < itemsOnScreen.length;i++){ + if($scope.jobs[i].name.substring($scope.jobs[i].name.length-sharedEndString.length,$scope.jobs[i].name.length)==reverse(sharedEndString)){ + $scope.jobs[i].name = $scope.jobs[i].name.substring(0,$scope.jobs[i].name.length-sharedEndString.length); + + } + } + } + } + //shameful copy and paste from SO + function reverse(s){ + return s.split("").reverse().join(""); + } + function sharedStart(array){ + var A= array.concat().sort(), + a1= A[0], a2= A[A.length-1], L= a1.length, i= 0; + while(i