Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .jshintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"evil": true,
"laxcomma": true,
"multistr": true,
"sub": true
}
45 changes: 23 additions & 22 deletions client/app/dashboard/model/list/ModelList.js
Original file line number Diff line number Diff line change
Expand Up @@ -166,15 +166,16 @@ angular.module('dashboard.Dashboard.Model.List', [
//Setup Columns in Grid
var columnRef = $scope.action.options.columnRef;
var columns = $scope.action.options.columns;
var subnav;
if (columnRef && typeof columnRef === 'object' && columnRef.label) {
if (columnRef.path) {
//reference to another main-nav's sub-nav's columns :)
var section = _.find(Config.serverParams.nav, { path: columnRef.path });
var subnav = _.find(section.subnav, { label: columnRef.label });
subnav = _.find(section.subnav, { label: columnRef.label });
columns = subnav.options.columns;
} else {
//reference to another subnav's columns in the same section
var subnav = _.find($scope.section.subnav, { label: columnRef.label });
subnav = _.find($scope.section.subnav, { label: columnRef.label });
columns = subnav.options.columns;

}
Expand Down Expand Up @@ -292,6 +293,8 @@ angular.module('dashboard.Dashboard.Model.List', [
function setupPagination() {
//make a copy of config params
var params = angular.copy($scope.action.options.params);
var field;
var direction;

if (params && params.filter && params.filter.length > 0) {
//use of filter JSON string
Expand All @@ -302,8 +305,8 @@ angular.module('dashboard.Dashboard.Model.List', [
if ($scope.sortInfo.fields.length > 0) {
filter.order = "";
for (var i in $scope.sortInfo.fields) {
var field = $scope.sortInfo.fields[i];
var direction = $scope.sortInfo.directions[i];
field = $scope.sortInfo.fields[i];
direction = $scope.sortInfo.directions[i];
if (!direction) direction = "ASC";
if (parseInt(i) > 0) filter.order += ", ";
filter.order += field + " " + direction;
Expand All @@ -323,11 +326,11 @@ angular.module('dashboard.Dashboard.Model.List', [

if ($scope.sortInfo.fields.length > 0) {
var sortOrder = "";
for (var i in $scope.sortInfo.fields) {
var field = $scope.sortInfo.fields[i];
var direction = $scope.sortInfo.directions[i];
for (var j in $scope.sortInfo.fields) {
field = $scope.sortInfo.fields[j];
direction = $scope.sortInfo.directions[j];
if (!direction) direction = "ASC";
if (parseInt(i) > 0) sortOrder += ", ";
if (parseInt(j) > 0) sortOrder += ", ";
sortOrder += field + " " + direction;
}

Expand Down Expand Up @@ -424,8 +427,7 @@ angular.module('dashboard.Dashboard.Model.List', [
GeneralModelService.list($scope.apiPath, params).then(
function(response) {
if (!response) return; //in case http request was cancelled
if( $scope.action.options.resultField !== undefined
&& response[$scope.action.options.resultField] !== undefined )
if($scope.action.options.resultField !== undefined && response[$scope.action.options.resultField] !== undefined)
$scope.list = response[$scope.action.options.resultField];
else
$scope.list = response;
Expand All @@ -440,7 +442,7 @@ angular.module('dashboard.Dashboard.Model.List', [
function(error) {
$scope.errorMessage = 'There was an error while loading...';
console.error(error);
})
});
};

/**
Expand Down Expand Up @@ -558,18 +560,18 @@ angular.module('dashboard.Dashboard.Model.List', [

//Remove all relationships to prevent upserting on the server side
var rowKeys = Object.keys(newRow);
for (var i in rowKeys) {
var key = rowKeys[i];
if (newRow[key] && typeof newRow[key] === 'object') {
delete newRow[key];
for (var j in rowKeys) {
var rowKey = rowKeys[j];
if (newRow[rowKey] && typeof newRow[rowKey] === 'object') {
delete newRow[rowKey];
}
}

//insert defaults as specified in config.json
if ($scope.action.options.defaults) {
var keys = Object.keys($scope.action.options.defaults);
for (var i in keys) {
var key = keys[i];
for (var k in keys) {
var key = keys[k];
var property = $scope.action.options.defaults[key];
if (property && (property.foreceDefaultOnSave || !newRow[key])) {
//set the default value (i.e. lastUpdated or lastUpdatedBy)
Expand All @@ -584,8 +586,8 @@ angular.module('dashboard.Dashboard.Model.List', [

//check if all required fields are filled in
if ($scope.action.options.columns) {
for (var i in $scope.action.options.columns) {
var column = $scope.action.options.columns[i];
for (var l in $scope.action.options.columns) {
var column = $scope.action.options.columns[l];
if (column.required && !newRow[column.field]) {
alert("Please fill in all required fields: " + column.displayName);
return;
Expand Down Expand Up @@ -764,7 +766,7 @@ angular.module('dashboard.Dashboard.Model.List', [

if (direction < 0) {
//scrolling down
var scrollY = $viewport.scrollTop();
scrollY = $viewport.scrollTop();
if (scrollY == 0) scrollY = -direction;
if ($scope.gridContainerTopMargin-scrollY > 0) {
$scope.gridContainerTopMargin -= scrollY;
Expand Down Expand Up @@ -792,8 +794,7 @@ angular.module('dashboard.Dashboard.Model.List', [
}
}
$scope.$digest(); //Make sure to refresh UI

}
};

//For Mobile let entire page scroll
if (/(iPad|iPhone|iPod|Android)/g.test( navigator.userAgent ) || $scope.action.options.flexibleHeight) {
Expand Down
2 changes: 1 addition & 1 deletion client/app/register/Register.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ angular.module('dashboard.Register', [
.catch(function(response) {
alert("Error registering");
});
}
};

init();
})
Expand Down
2 changes: 1 addition & 1 deletion client/common/directives/DateTimePicker/DateTimePicker.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ angular.module('dashboard.directive.DateTimePicker', [
defaultDate: scope.defaultDate ? moment(scope.defaultDate).toDate() : undefined,
viewMode: scope.viewMode,
widgetPositioning: { horizontal: scope.horizontal ? scope.horizontal : 'auto' }
}
};
if (scope.minDate) options.minDate = scope.minDate;
if (scope.maxDate) options.maxDate = scope.maxDate;
elem.datetimepicker(options);
Expand Down
11 changes: 6 additions & 5 deletions client/common/directives/ModelField/ModelField.js
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ angular.module('dashboard.directives.ModelField', [
if (scope.property.display.options instanceof Array) {
//Handle when options is array of objects containing key/value pair
if (typeof scope.property.display.options[0] === 'object' && !Array.isArray(scope.property.display.options[0])) {
ngOptions = 'item.key as item.value disable when item.disabled for item in display.options'
ngOptions = 'item.key as item.value disable when item.disabled for item in display.options';
} else {
//Handle when options is a an array vs key/value pair object
ngOptions = 'value as value for value in display.options';
Expand All @@ -175,7 +175,7 @@ angular.module('dashboard.directives.ModelField', [
if (scope.property.display.options instanceof Array) {
//Handle when options is array of objects containing key/value pair
if (typeof scope.property.display.options[0] === 'object' && !Array.isArray(scope.property.display.options[0])) {
ngRepeat = 'item in display.options'
ngRepeat = 'item in display.options';
} else {
//Handle when options is a an array vs key/value pair
ngRepeat = 'text in display.options';
Expand Down Expand Up @@ -280,6 +280,7 @@ angular.module('dashboard.directives.ModelField', [
</div>';
break;
case 'text':
/* falls through */
default:
template = '<label class="col-sm-2 control-label">{{ display.label || key }}:</label>\
<div class="col-sm-10">\
Expand Down Expand Up @@ -408,12 +409,12 @@ angular.module('dashboard.directives.ModelField', [
delete scope.display.error;
delete scope.display.errorCode;
if (scope.ngError) scope.ngError({error: null});
return
return;
} else if (e.target.value.length === 0 && property.display.isRequired) {
scope.display.error = "This is a required field.";
if (scope.ngError) scope.ngError({error: new Error(scope.display.error)});
}
}
};
}

if (property.display.type == 'file' && scope.data[scope.key]) {
Expand Down Expand Up @@ -452,7 +453,7 @@ angular.module('dashboard.directives.ModelField', [
if (value == undefined || value == null) return property.display.default;
data[key] = value == '1' || value == 1; //Fixes a bug where data[key] changes from bool to string can cause checkbox to get unchecked
return data[key];
}
};
//Make sure boolean (checkbox) values are numeric (below only gets called on init and not when state changes)
if (typeof scope.data[scope.key] === "string") scope.data[scope.key] = parseInt(scope.data[scope.key]);
}
Expand Down
5 changes: 3 additions & 2 deletions client/common/directives/ModelFieldImage/ModelFieldImage.js
Original file line number Diff line number Diff line change
Expand Up @@ -230,9 +230,10 @@ angular.module('dashboard.directives.ModelFieldImage', [
$modal.append($container);
$("body").append($modal);

var scale;
if (scope.options.isLightbox) {
//Lightbox only
var scale = Math.min($container.width() / image.width, $container.height() / image.height);
scale = Math.min($container.width() / image.width, $container.height() / image.height);
var width = image.width * scale;
var height = image.height * scale;
$container.css({
Expand All @@ -245,7 +246,7 @@ angular.module('dashboard.directives.ModelFieldImage', [
var $zoom = $('<div style="display: inline-block; width: 70%; height: 100%;"></div>');
$container.append($thumbnail);
$container.append($zoom);
var scale = Math.min($thumbnail.width() / image.width, $thumbnail.height() / image.height);
scale = Math.min($thumbnail.width() / image.width, $thumbnail.height() / image.height);
var thumbnailWidth = image.width * scale;
var thumbnailHeight = image.height * scale;
$thumbnail.css({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ angular.module('dashboard.directives.ModelFieldLocation', [
});

}, function () {
console.error("Error loading Google Maps")
console.error("Error loading Google Maps");
});

function initMap() {
Expand Down Expand Up @@ -201,7 +201,7 @@ angular.module('dashboard.directives.ModelFieldLocation', [
}
});
}
}
};

function initSelectedMarker() {
//update marker
Expand Down Expand Up @@ -229,19 +229,19 @@ angular.module('dashboard.directives.ModelFieldLocation', [
} else {
var LatLng = new google.maps.LatLng(scope.data.lat,scope.data.lng);
selectedMarker.setPosition(LatLng);
selectedMarker.setMap(map)
selectedMarker.setMap(map);
map.setCenter(LatLng);
}
}
}

scope.clearSearch = function() {
scope.hasSearched = false;
}
};

scope.revertValue = function() {
if( originalValue ) scope.data = originalValue;
}
};
}
};
})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ angular.module('dashboard.directives.ModelFieldMultiSelect', [])
*/
function initOptions() {
var options = scope.options || property.display.options;
var option;
var key;
if (typeof options === 'string') {
//Check if options on new line
if (options.indexOf('\n') > -1) {
Expand All @@ -71,12 +73,12 @@ angular.module('dashboard.directives.ModelFieldMultiSelect', [])
var item = options[i];
if (typeof item === 'string') {
//string option
var option = {key: item, value: item};
option = { key: item, value: item };
scope.multiSelectOptions.push(option);
} else if (item && typeof item === 'object') {
//Objects (key/value pair)
var key = item[keyOverride] || i; //fallback to index if no key
var option = { key: key, value: item[valueOverride], item: item };
key = item[keyOverride] || i; //fallback to index if no key
option = { key: key, value: item[valueOverride], item: item };
scope.multiSelectOptions.push(option);
}
}
Expand All @@ -85,8 +87,8 @@ angular.module('dashboard.directives.ModelFieldMultiSelect', [])
//Assume object containing key/value pair
var keys = Object.keys(options);
for (var k in keys) {
var key = keys[k];
var option = { key: key, value: options[key] };
key = keys[k];
option = { key: key, value: options[key] };
scope.multiSelectOptions.push(option);
}
}
Expand All @@ -96,6 +98,7 @@ angular.module('dashboard.directives.ModelFieldMultiSelect', [])
* Initial data load by checking desired output as comma, array, or object
*/
function initData() {
var index;
if (typeof property.display.output === 'undefined') {
var options = scope.options || property.display.options;
property.display.output = options instanceof Array ? "comma" : "object";
Expand All @@ -107,22 +110,22 @@ angular.module('dashboard.directives.ModelFieldMultiSelect', [])
var item = items[i];
if (item[0] == '"') item = item.substring(1, item.length);
if (item[item.length-1] == '"') item = item.substring(0, item.length-1);
var index = _.findIndex(scope.multiSelectOptions, {key: item});
index = _.findIndex(scope.multiSelectOptions, { key: item });
if (index > -1) scope.selected[index] = true;
}
} else if (Array.isArray(scope.data)) {
if (!scope.data) scope.data = [];
for (var i in scope.data) {
var value = scope.data[i];
var index = _.findIndex(scope.multiSelectOptions, {key: value});
for (var j in scope.data) {
var value = scope.data[j];
index = _.findIndex(scope.multiSelectOptions, { key: value });
if (index > -1) scope.selected[index] = true;
}
} else if (scope.data && typeof scope.data === 'object') {
if (!scope.data) scope.data = {};
var keys = Object.keys(scope.data);
for (var k in keys) {
var key = keys[k];
var index = _.findIndex(scope.multiSelectOptions, {key: key});
index = _.findIndex(scope.multiSelectOptions, { key: key });
if (index > -1) scope.selected[index] = true;
}
}
Expand Down
Loading