Skip to content

Commit

Permalink
Issue #31 (Summarize Min and Max on Dates)
Browse files Browse the repository at this point in the history
  • Loading branch information
d4nt committed Sep 21, 2019
1 parent c088967 commit 343268e
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 39 deletions.
38 changes: 22 additions & 16 deletions Web/Scripts/nodes.js
Original file line number Diff line number Diff line change
Expand Up @@ -814,6 +814,26 @@ nodes.Sort = function(properties) {
return instance;
};

var SummarizeStatistic = function(parent, aggFunc, aggCol) {
var _parent = parent;
var self = this;
self.AggFunction = ko.observable(aggFunc);
self.AggColumn = ko.observable(aggCol);
self.ShowAggColumn = ko.pureComputed(function() {
var af = self.AggFunction();
var afi = _parent.Tool.AggFunctions().filter(function(f) { return f.id == af })[0];
return afi.requiresColumn;
});
self.AvailableAggColumns = ko.pureComputed(function() {
return _parent.AllInputColumnInfos().filter(function(c) {
var af = self.AggFunction();
var afi = _parent.Tool.AggFunctions().filter(function(f) { return f.id == af })[0];
return tools.IsNumericType(c.Type) || (tools.IsDatetimeType(c.Type) && afi.WorksWithDates);
});
});
return self;
};

nodes.Summarize = function(properties) {
var instance = new nodes.DataProcessorBase(properties);

Expand Down Expand Up @@ -841,14 +861,6 @@ nodes.Summarize = function(properties) {
return results;
}

instance.AggColumns = ko.computed(function () {
return instance.AllInputColumnInfos().filter(function (col) { return tools.IsNumericType(col.Type); });
});

instance.AggFunctions = ko.computed(function() {
return instance.Tool.AggFunctions().filter(function(aggFunc) { return aggFunc.requiresNumeric === false || instance.AggColumns().length > 0 });
});

var innerGetCoreSettings = instance.GetCoreSettings;
instance.GetCoreSettings = function () {
var settings = innerGetCoreSettings();
Expand Down Expand Up @@ -880,10 +892,7 @@ nodes.Summarize = function(properties) {
var statistics = [];
for (var i = 0; i < settings.AggFunctions.length; i++) {
if (settings.AggColumnIndexes.length > i) {
statistics.push({
"AggFunction": ko.observable(settings.AggFunctions[i]),
"AggColumn": ko.observable(settings.AggColumnIndexes[i]),
});
statistics.push(new SummarizeStatistic(instance, settings.AggFunctions[i], settings.AggColumnIndexes[i]));
}
}
instance.Statistics(statistics);
Expand All @@ -899,10 +908,7 @@ nodes.Summarize = function(properties) {
}

instance.AddStatistic = function () {
instance.Statistics.push({
"AggFunction": ko.observable(2),
"AggColumn": ko.observable(0)
});
instance.Statistics.push(new SummarizeStatistic(instance, 2, 0));
};

instance.RemoveStatistic = function (item, event) {
Expand Down
12 changes: 6 additions & 6 deletions Web/Scripts/tools.js
Original file line number Diff line number Diff line change
Expand Up @@ -252,12 +252,12 @@ tools.Summarize = function () {
});

instance.AggFunctions = ko.observableArray([
{ id: 1, text: "Number of Rows", requiresNumeric: false },
{ id: 2, text: "Total", requiresNumeric: true },
{ id: 3, text: "Minimum", requiresNumeric: true },
{ id: 4, text: "Maximum", requiresNumeric: true },
{ id: 5, text: "Average", requiresNumeric: true },
{ id: 6, text: "Median", requiresNumeric: true }
{ id: 1, text: "Number of Rows", requiresColumn: false, WorksWithDates: true },
{ id: 2, text: "Total", requiresColumn: true, WorksWithDates: false },
{ id: 3, text: "Minimum", requiresColumn: true, WorksWithDates: true },
{ id: 4, text: "Maximum", requiresColumn: true, WorksWithDates: true },
{ id: 5, text: "Average", requiresColumn: true, WorksWithDates: false },
{ id: 6, text: "Median", requiresColumn: true, WorksWithDates: false }
]);

instance.DateFunctions = ko.observableArray([
Expand Down
6 changes: 6 additions & 0 deletions Web/Views/Shared/_SqbInclude.cshtml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<environment include="Development">
<script src="~/js/sqb.js"></script>
</environment>
<environment exclude="Development">
<script src="~/js/sqb.min.js"></script>
</environment>
10 changes: 4 additions & 6 deletions Web/Views/Simple/Create.cshtml
Original file line number Diff line number Diff line change
Expand Up @@ -161,14 +161,12 @@
<!--ko foreach: Statistics-->
<div class="form-inline">
<div class="form-group">
<select name="AggFunction" data-bind="options: $parent.AggFunctions, optionsText: 'text', optionsValue: 'id', value: AggFunction" class="form-control"></select>
<select name="AggFunction" data-bind="options: $parent.Tool.AggFunctions, optionsText: 'text', optionsValue: 'id', value: AggFunction" class="form-control"></select>
</div>
<!--ko if: AggFunction() != 1-->
<div class="form-group">
<div class="form-group" data-bind="visible: ShowAggColumn">
<label for="AggColumn" class="control-label" style="width: 40px; text-align: center;"> of </label>
<select name="AggColumn" data-bind="options: $parent.AggColumns, optionsText: 'Name', optionsValue: 'Index', value: AggColumn" class="form-control"></select>
<select name="AggColumn" data-bind="options: AvailableAggColumns, optionsText: 'Name', optionsValue: 'Index', value: AggColumn" class="form-control"></select>
</div>
<!--/ko-->
<div class="form-group">
<!--ko if: $parent.Statistics().length == 1-->
<a href="#" class="btn btn-default" data-bind="click: $root.removeStatistics">remove</a>
Expand Down Expand Up @@ -320,7 +318,7 @@

@section Scripts {
<script src="https://cdn.jsdelivr.net/g/jquery.ui@1.9.2,knockout@3.4.0,d3js@3.5.17,momentjs@2.13.0"></script>
<script src="~/js/sqb.min.js"></script>
<partial name="_SqbInclude" />

<script>
var viewModel = null;
Expand Down
10 changes: 4 additions & 6 deletions Web/Views/Simple/Edit.cshtml
Original file line number Diff line number Diff line change
Expand Up @@ -163,14 +163,12 @@
<!--ko foreach: Statistics-->
<div class="form-inline">
<div class="form-group">
<select name="AggFunction" data-bind="options: $parent.AggFunctions, optionsText: 'text', optionsValue: 'id', value: AggFunction" class="form-control"></select>
<select name="AggFunction" data-bind="options: $parent.Tool.AggFunctions, optionsText: 'text', optionsValue: 'id', value: AggFunction" class="form-control"></select>
</div>
<!--ko if: AggFunction() != 1-->
<div class="form-group">
<div class="form-group" data-bind="visible: ShowAggColumn">
<label for="AggColumn" class="control-label" style="width: 40px; text-align: center;"> of </label>
<select name="AggColumn" data-bind="options: $parent.AggColumns, optionsText: 'Name', optionsValue: 'Index', value: AggColumn" class="form-control"></select>
<select name="AggColumn" data-bind="options: AvailableAggColumns, optionsText: 'Name', optionsValue: 'Index', value: AggColumn" class="form-control"></select>
</div>
<!--/ko-->
<div class="form-group">
<!--ko if: $parent.Statistics().length == 1-->
<a href="#" class="btn btn-default" data-bind="click: $root.removeStatistics">remove</a>
Expand Down Expand Up @@ -344,7 +342,7 @@

@section Scripts {
<script src="https://cdn.jsdelivr.net/g/jquery.ui@1.9.2,knockout@3.4.0,d3js@3.5.17,momentjs@2.13.0"></script>
<script src="~/js/sqb.min.js"></script>
<partial name="_SqbInclude" />

<script>
$(document).ready(function () {
Expand Down
8 changes: 3 additions & 5 deletions Web/wwwroot/partials/Summarize.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,12 @@
<!--ko foreach: Statistics-->
<div class="form-group">
<label>Calculate the</label>
<select class="form-control" name="AggFunction" data-bind="options: $parent.AggFunctions, optionsText: 'text', optionsValue: 'id', value: AggFunction"></select>
<select class="form-control" name="AggFunction" data-bind="options: $parent.Tool.AggFunctions, optionsText: 'text', optionsValue: 'id', value: AggFunction"></select>
</div>
<!--ko if: AggFunction() != 1-->
<div class="form-group">
<div class="form-group" data-bind="visible: ShowAggColumn">
<label for="AggColumn">Of column</label>
<select class="form-control" name="AggColumn" data-bind="options: $parent.AggColumns, optionsText: 'Name', optionsValue: 'Index', value: AggColumn"></select>
<select class="form-control" name="AggColumn" data-bind="options: AvailableAggColumns, optionsText: 'Name', optionsValue: 'Index', value: AggColumn"></select>
</div>
<!--/ko-->
<!--ko if: $parent.Statistics().length > 1-->
<div class="form-group">
<a class="btn btn-warning" data-bind="click: $parent.RemoveStatistic">Remove</a>
Expand Down

0 comments on commit 343268e

Please sign in to comment.