Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master' into NotNull
Browse files Browse the repository at this point in the history
# Conflicts:
#	Signum.Engine/Engine/SchemaSynchronizer.cs
#	Signum.Engine/Engine/SqlBuilder.cs
#	Signum.Engine/Operations/Graph.cs
#	Signum.Engine/Schema/Schema.Save.cs
#	Signum.Entities/Lite.cs
#	Signum.React/Signum.React.csproj
  • Loading branch information
olmobrutall committed Feb 13, 2019
2 parents d50cc89 + bb11b32 commit add8d37
Show file tree
Hide file tree
Showing 44 changed files with 431 additions and 173 deletions.
6 changes: 3 additions & 3 deletions Signum.Engine/Engine/SchemaSynchronizer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,7 @@ from c in t.Columns.Values
var disableSystemVersioning = (dif.TemporalType != SysTableTemporalType.None &&
(tab.SystemVersioned == null ||
!object.Equals(replacements.Apply(Replacements.KeyTables, dif.TemporalTableName!.ToString()), tab.SystemVersioned.TableName.ToString()) ||
(alterColumnToNotNullableHistory = NullabilityChanges(tab, dif) && SafeConsole.Ask($"Table {tab.Name} has nullability changes. Disable and re-enable System Versioning?"))) ?
(alterColumnToNotNullableHistory = NullabilityChanges(tab, dif) && (replacements.Interactive ? SafeConsole.Ask($"Table {tab.Name} has nullability changes. Disable and re-enable System Versioning?") : true))) ?
SqlBuilder.AlterTableDisableSystemVersioning(tab.Name).Do(a => a.GoAfter = true) : null);

var dropPeriod = (dif.Period != null &&
Expand Down Expand Up @@ -379,7 +379,7 @@ from c in t.Columns.Values
Dictionary<string, Index> modelIxs = modelIndices[tab];

var controlledIndexes = Synchronizer.SynchronizeScript(Spacing.Simple, modelIxs, dif.Indices,
createNew: (i, mix) => mix is UniqueIndex || mix.Columns.Any(isNew) || SafeConsole.Ask(ref createMissingFreeIndexes, "Create missing non-unique index {0} in {1}?".FormatWith(mix.IndexName, tab.Name)) ? SqlBuilder.CreateIndex(mix, checkUnique: replacements) : null,
createNew: (i, mix) => mix is UniqueIndex || mix.Columns.Any(isNew) || (replacements.Interactive ? SafeConsole.Ask(ref createMissingFreeIndexes, "Create missing non-unique index {0} in {1}?".FormatWith(mix.IndexName, tab.Name)) : true) ? SqlBuilder.CreateIndex(mix, checkUnique: replacements) : null,
removeOld: null,
mergeBoth: (i, mix, dix) => !dix.IndexEquals(dif, mix) ? SqlBuilder.CreateIndex(mix, checkUnique: replacements) :
mix.IndexName != dix.IndexName ? SqlBuilder.RenameIndex(tab.Name, dix.IndexName, mix.IndexName) : null);
Expand All @@ -400,7 +400,7 @@ from c in t.Columns.Values
Dictionary<string, Index> modelIxs = modelIndices[tab].Where(kvp => kvp.Value.GetType() == typeof(Index)).ToDictionary();

var controlledIndexes = Synchronizer.SynchronizeScript(Spacing.Simple, modelIxs, dif.Indices,
createNew: (i, mix) => mix is UniqueIndex || mix.Columns.Any(isNew) || SafeConsole.Ask(ref createMissingFreeIndexes, "Create missing non-unique index {0} in {1}?".FormatWith(mix.IndexName, tab.Name)) ? SqlBuilder.CreateIndexBasic(mix, forHistoryTable: true) : null,
createNew: (i, mix) => mix is UniqueIndex || mix.Columns.Any(isNew) || (replacements.Interactive ? SafeConsole.Ask(ref createMissingFreeIndexes, "Create missing non-unique index {0} in {1}?".FormatWith(mix.IndexName, tab.Name)) : true) ? SqlBuilder.CreateIndexBasic(mix, forHistoryTable: true) : null,
removeOld: null,
mergeBoth: (i, mix, dix) => !dix.IndexEquals(dif, mix) ? SqlBuilder.CreateIndexBasic(mix, forHistoryTable: true) :
mix.IndexName != dix.IndexName ? SqlBuilder.RenameIndex(tab.SystemVersioned!.TableName, dix.IndexName, mix.IndexName) : null);
Expand Down
4 changes: 2 additions & 2 deletions Signum.Engine/Engine/SqlBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@ public static SqlPreCommand DropTable(DiffTable diffTable)

return SqlPreCommandConcat.Combine(Spacing.Simple,
AlterTableDisableSystemVersioning(diffTable.Name),
DropTable(diffTable.Name),
DropTable(diffTable.TemporalTableName)
DropTable(diffTable.Name)
//DropTable(diffTable.TemporalTableName)
)!;
}

Expand Down
5 changes: 4 additions & 1 deletion Signum.Engine/Operations/Graph.cs
Original file line number Diff line number Diff line change
Expand Up @@ -458,6 +458,8 @@ public class Execute : _Execute<T>, IExecuteOperation
bool IOperation.Returns { get { return true; } }
Type? IOperation.ReturnType { get { return null; } }
Type? IOperation.StateType { get { return null; } }
public bool AvoidImplicitSave { get; set; }
public bool AvoidImplicitSave { get; set; }

Type IEntityOperation.BaseType { get { return Symbol.BaseType; } }
bool IEntityOperation.HasCanExecute { get { return CanExecute != null; } }
Expand Down Expand Up @@ -529,7 +531,8 @@ void IExecuteOperation.Execute(IEntity entity, params object[]? args)

AssertEntity((T)entity);

entity.Save(); //Nothing happens if already saved
if (!AvoidImplicitSave)
entity.Save(); //Nothing happens if already saved

log.SetTarget(entity);
log.End = TimeZoneManager.Now;
Expand Down
9 changes: 5 additions & 4 deletions Signum.Engine/Schema/Schema.Save.cs
Original file line number Diff line number Diff line change
Expand Up @@ -530,10 +530,11 @@ internal static UpdateCache InitializeUpdate(Table table)
return update + "\r\nIF @@ROWCOUNT = 0 INSERT INTO @NotFound (id) VALUES ({0})".FormatWith(idParamName + suffix);
};

List<Expression> parameters = new List<Expression>();

parameters.Add(pb.ParameterFactory(Trio.Concat(idParamName, paramSuffix), table.PrimaryKey.SqlDbType, null, false,
Expression.Field(Expression.Property(Expression.Field(paramIdent, fiId), "Value"), "Object")));
List<Expression> parameters = new List<Expression>
{
pb.ParameterFactory(Trio.Concat(idParamName, paramSuffix), table.PrimaryKey.SqlDbType, null, false,
Expression.Field(Expression.Property(Expression.Field(paramIdent, fiId), "Value"), "Object"))
};

if (table.Ticks != null)
{
Expand Down
8 changes: 5 additions & 3 deletions Signum.Entities/Lite.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public interface Lite<out T> : IComparable, IComparable<Lite<Entity>>
void ClearEntity();
void SetEntity(Entity ei);
void SetToString(string toStr);
void RefreshId();
PrimaryKey RefreshId();

string Key();
string KeyLong();
Expand Down Expand Up @@ -155,9 +155,11 @@ public void ClearEntity()
this.entityOrNull = null;
}

public void RefreshId()
public PrimaryKey RefreshId()
{
id = entityOrNull?.Id;
var newId = entityOrNull!.Id;
id = newId;
return newId;
}

protected internal override void PreSaving(PreSavingContext ctx)
Expand Down
15 changes: 2 additions & 13 deletions Signum.Entities/Translations/Signum.Entities.de.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,22 +14,11 @@
<Type Name="CalendarMessage">
<Member Name="Today" Description="Heute" />
</Type>
<Type Name="CollectionAnyAllType" />
<Type Name="CollectionElementType">
<Member Name="All" Description="Alle" />
<Member Name="All2" Description="Alle (2)" />
<Member Name="All3" Description="Alle (3)" />
<Member Name="Any" Description="Einige" />
<Member Name="Any2" Description="Einige (2)" />
<Member Name="Any3" Description="Einige (3)" />
<Member Name="AnyNo" Description="Einige nicht" />
<Member Name="AnyNo2" Description="Einige nicht (2)" />
<Member Name="AnyNo3" Description="Einige nicht (3)" />
<Member Name="Element" Description="Element" />
<Member Name="Element2" Description="Element (2)" />
<Member Name="Element3" Description="Element (3)" />
<Member Name="NoOne" Description="Kein" />
<Member Name="NoOne2" Description="Kein (2)" />
<Member Name="NoOne3" Description="Kein (3)" />
</Type>
<Type Name="ColorEmbedded" Description="Farbe">
<Member Name="Argb" Description="ARGB" />
Expand Down Expand Up @@ -125,6 +114,7 @@
<Member Name="UserHostName" Description="Benutzer Hostname" />
<Member Name="Version" Description="Version" />
</Type>
<Type Name="FilterGroupOperation" />
<Type Name="FilterOperation" Description="Filteroperation">
<Member Name="Contains" Description="enthält" />
<Member Name="DistinctTo" Description="anders als" />
Expand Down Expand Up @@ -406,7 +396,6 @@
<Member Name="_0And1CanNotBeSetAtTheSameTime" Description="{0} und {1} können nicht gleichzeitig festgelegt werden" />
<Member Name="_0DoesNotHaveAValid1Format" Description="{0} hat kein gültiges {1}-Format" />
<Member Name="_0HasAnInvalidFormat" Description="{0} hat ein ungültiges Format" />
<Member Name="_0HasAPrecissionOf1InsteadOf2" Description="{0} hat eine genauigkeit von {1} statt {2}" />
<Member Name="_0HasMoreThan1DecimalPlaces" Description="{0} hat mehr als {1} Dezimalstellen" />
<Member Name="_0HasSomeRepeatedElements1" Description="{0} hat einige wiederholte Elemente: {1}" />
<Member Name="_0HasToBeBetween1And2" Description="{0} muss zwischen {1} und {2} sein" />
Expand Down
2 changes: 2 additions & 0 deletions Signum.Entities/Translations/Signum.Entities.en.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
<Type Name="AggregateFunction" />
<Type Name="BooleanEnum" />
<Type Name="CalendarMessage" />
<Type Name="CollectionAnyAllType" />
<Type Name="CollectionElementType" />
<Type Name="ColorEmbedded" />
<Type Name="ColumnOptionsMode" />
Expand All @@ -23,6 +24,7 @@
<Type Name="EntityMessage" />
<Type Name="EnumEntity`1" />
<Type Name="ExceptionEntity" />
<Type Name="FilterGroupOperation" />
<Type Name="FilterOperation">
<Member Name="Contains" Description="contains" />
<Member Name="DistinctTo" Description="distinct to" />
Expand Down
22 changes: 4 additions & 18 deletions Signum.Entities/Translations/Signum.Entities.es.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,22 +14,11 @@
<Type Name="CalendarMessage">
<Member Name="Today" Description="Hoy" />
</Type>
<Type Name="CollectionAnyAllType" />
<Type Name="CollectionElementType">
<Member Name="All" Description="Todos" />
<Member Name="All2" Description="Todos (2)" />
<Member Name="All3" Description="Todos (3)" />
<Member Name="Any" Description="Alguno" />
<Member Name="Any2" Description="Alguno (2)" />
<Member Name="Any3" Description="Alguno (3)" />
<Member Name="AnyNo" Description="Alguno no" />
<Member Name="AnyNo2" Description="Alguno no (2)" />
<Member Name="AnyNo3" Description="Alguno no (3)" />
<Member Name="Element" Description="Elemento" />
<Member Name="Element2" Description="Elemento (2)" />
<Member Name="Element3" Description="Elemento (3)" />
<Member Name="NoOne" Description="Ninguno" />
<Member Name="NoOne2" Description="Ninguno (2)" />
<Member Name="NoOne3" Description="Ninguno (3)" />
</Type>
<Type Name="ColorEmbedded" Description="Color">
<Member Name="Argb" Description="Argb" />
Expand All @@ -56,11 +45,8 @@
</Type>
<Type Name="DeleteLogParametersEmbedded" Description="Parámetros eliminación de registros">
<Member Name="ChunkSize" Description="Tamaño" />
<Member Name="DateLimit" Description="Fecha límite" />
<Member Name="DeleteLogsWithMoreThan" Description="Eliminar registros con más de" />
<Member Name="MaxChunks" Description="Max trozos" />
<Member Name="PauseTime" Description="Tiempo de pausa" />
<Member Name="TypeOverrides" Description="Sobrescritura de tipo" />
</Type>
<Type Name="DeleteLogsTypeOverridesEmbedded" Description="Borrar registros de sobrescritura de tipo">
<Member Name="DeleteLogsWithMoreThan" Description="Eliminar registros con más de" />
Expand Down Expand Up @@ -124,6 +110,7 @@
<Member Name="UserHostName" Description="Nombre de Host del usuario" />
<Member Name="Version" Description="Versión" />
</Type>
<Type Name="FilterGroupOperation" />
<Type Name="FilterOperation" Description="Operación de filtro">
<Member Name="Contains" Description="contiene" />
<Member Name="DistinctTo" Description="distinto de" />
Expand Down Expand Up @@ -381,11 +368,11 @@
<Member Name="Key" Description="Clave" />
</Type>
<Type Name="SynchronizerMessage">
<Member Name="_0HasBeenRenamedIn1" Description=" ¿'{0}' ha sido renombrada en {1}?" />
<Member Name="EndOfSyncScript" Description="--- FIN DEL SCRIPT DE SINCRONIZACION" />
<Member Name="NNone" Description="- n: Ninguno" />
<Member Name="StartOfSyncScriptGeneratedOn0" Description="--- INICIO DEL SCRIPT DE SINCRONIZACIÓN GENERADO EL {0}" />
</Type>
<Type Name="SystemTimeMode" />
<Type Name="SystemTimeProperty" />
<Type Name="TypeEntity" Description="Tipo">
<Member Name="ClassName" Description="Class Name" />
<Member Name="CleanName" Description="Clean Name" />
Expand All @@ -397,7 +384,6 @@
<Member Name="_0And1CanNotBeSetAtTheSameTime" Description="{0} y {1} pueden no ajustarse al mismo tiempo" />
<Member Name="_0DoesNotHaveAValid1Format" Description="{0} no tiene un formato válido {1}" />
<Member Name="_0HasAnInvalidFormat" Description="{0} tiene un formato inválido" />
<Member Name="_0HasAPrecissionOf1InsteadOf2" Description="{0} tiene una precisión de {1} en lugar de {2}" />
<Member Name="_0HasMoreThan1DecimalPlaces" Description="{0} tiene más de {1} decimales " />
<Member Name="_0HasSomeRepeatedElements1" Description="{0} tiene elementos repetidos: {1}" />
<Member Name="_0HasToBeBetween1And2" Description="{0} tiene que ser entre {1} y {2}" />
Expand Down
4 changes: 4 additions & 0 deletions Signum.Entities/Translations/Signum.Entities.fa.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
<Type Name="AggregateFunction" />
<Type Name="BooleanEnum" />
<Type Name="CalendarMessage" />
<Type Name="CollectionAnyAllType" />
<Type Name="CollectionElementType" />
<Type Name="ColorEmbedded" />
<Type Name="ColumnOptionsMode" />
Expand All @@ -20,6 +21,7 @@
<Type Name="EntityMessage" />
<Type Name="EnumEntity`1" />
<Type Name="ExceptionEntity" />
<Type Name="FilterGroupOperation" />
<Type Name="FilterOperation" />
<Type Name="IEntity" />
<Type Name="ImmutableEntity" />
Expand Down Expand Up @@ -49,6 +51,8 @@
<Type Name="StringCase" />
<Type Name="Symbol" />
<Type Name="SynchronizerMessage" />
<Type Name="SystemTimeMode" />
<Type Name="SystemTimeProperty" />
<Type Name="TypeEntity" />
<Type Name="ValidationMessage" />
<Type Name="VoidEnumMessage" />
Expand Down
6 changes: 4 additions & 2 deletions Signum.Entities/ValidationAttributes.cs
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,9 @@ public override string FormatName

public class TelephoneValidatorAttribute : RegexValidatorAttribute
{
public static Regex TelephoneRegex = new Regex(@"^((\+)\p{Nd}\p{Nd})? *(\([ \p{Nd}]+\))? *[\p{Nd}][ \-\.\p{Nd}]+$");
public static string BasicRegex = @"((\+)\p{Nd}\p{Nd})? *(\([ \p{Nd}]+\))?([ \p{Nd}]+ */)? *[\p{Nd}][ \-\.\p{Nd}]+";

public static Regex TelephoneRegex = new Regex($@"^{BasicRegex}$");

public TelephoneValidatorAttribute()
: base(TelephoneRegex)
Expand All @@ -241,7 +243,7 @@ public override string FormatName

public class MultipleTelephoneValidatorAttribute : RegexValidatorAttribute
{
public static Regex MultipleTelephoneRegex = new Regex(@"^((\+)\p{Nd}\p{Nd})? *(\([ \p{Nd}]+\))? *[\p{Nd}][ \-\.\p{Nd}]+(,\s*((\+)\p{Nd}\p{Nd})? *(\([ \p{Nd}]+\))? *[\p{Nd}][ \-\.\p{Nd}]+)*");
public static Regex MultipleTelephoneRegex = new Regex($@"^{TelephoneValidatorAttribute.BasicRegex}(,\s*{TelephoneValidatorAttribute.BasicRegex})*");

public MultipleTelephoneValidatorAttribute()
: base(MultipleTelephoneRegex)
Expand Down
8 changes: 6 additions & 2 deletions Signum.React/Facades/SignumServer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public static class SignumServer
{
public static JsonSerializerSettings JsonSerializerSettings;

public static void AddSignumJsonConverters(this MvcJsonOptions jsonOptions)
public static MvcJsonOptions AddSignumJsonConverters(this MvcJsonOptions jsonOptions)
{
//Signum converters
jsonOptions.SerializerSettings.Do(s =>
Expand All @@ -37,9 +37,11 @@ public static void AddSignumJsonConverters(this MvcJsonOptions jsonOptions)
s.Converters.Add(new ResultTableConverter());
s.Converters.Add(new TimeSpanConverter());
});

return jsonOptions;
}

public static void AddSignumGlobalFilters(this MvcOptions options)
public static MvcOptions AddSignumGlobalFilters(this MvcOptions options)
{
options.Filters.Add(new SignumExceptionFilterAttribute());
options.Filters.Add(new CleanThreadContextAndAssertFilter());
Expand All @@ -49,6 +51,8 @@ public static void AddSignumGlobalFilters(this MvcOptions options)
options.Filters.Add(new SignumAuthenticationFilter());
options.Filters.Add(new SignumCultureSelectorFilter());
options.Filters.Add(new VersionFilterAttribute());

return options;
}

public static void Start(IApplicationBuilder app, IHostingEnvironment hostingEnvironment, Assembly mainAsembly)
Expand Down
19 changes: 14 additions & 5 deletions Signum.React/Scripts/Components/Tabs.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import * as React from 'react'
import * as React from 'react'
import * as PropTypes from 'prop-types'
import { classes } from '../Globals';
import { ErrorBoundary } from './ErrorBoundary';
Expand Down Expand Up @@ -86,12 +86,16 @@ export class Tabs extends React.Component<TabsProps> {

var { activeEventKey, children, toggle, hideOnly, pills, fill, ...attrs } = this.props;

var array = (React.Children.toArray(this.props.children).filter(a => typeof a == "object" && (a as React.ReactElement<any>).type == Tab) as React.ReactElement<TabProps>[]);
var allChildren = React.Children.toArray(this.props.children);

var tabs = allChildren.filter(a => typeof a == "object" && (a as React.ReactElement<any>).type == Tab) as React.ReactElement<TabProps>[];

var noTabs = allChildren.filter(a => !tabs.contains(a as any));

return (
<div {...attrs}>
<ul className={"nav " + (pills ? "nav-pills" : "nav-tabs") + (fill ? " nav-fill" : "")}>
{array.map(t =>
{tabs.map(t =>
<li className="nav-item" key={t.props.eventKey} data-eventkey={t.props.eventKey}>
<a href="#"
className={classes("nav-link", this.props.activeEventKey == t.props.eventKey && "active")}
Expand All @@ -105,10 +109,15 @@ export class Tabs extends React.Component<TabsProps> {
</a>
</li>
)}
{
noTabs.map((nt, i) => <li key={"nt" + i} className="nav-item no-tab">
{nt}
</li>)
}
</ul>
{hideOnly ?
array.map(elem => React.cloneElement(elem, ({ style: elem.props.eventKey == this.props.activeEventKey ? undefined : { display: "none" } }) as React.HTMLAttributes<any>)) :
array.filter(elem => elem.props.eventKey == this.props.activeEventKey)
tabs.map(elem => React.cloneElement(elem, ({ style: elem.props.eventKey == this.props.activeEventKey ? undefined : { display: "none" } }) as React.HTMLAttributes<any>)) :
tabs.filter(elem => elem.props.eventKey == this.props.activeEventKey)
}
</div>
);
Expand Down
22 changes: 22 additions & 0 deletions Signum.React/Scripts/FindOptions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,28 @@ export function hasAggregate(token: QueryToken | undefined): boolean {
return hasAggregate(token.parent);
}

export function withoutAggregateAndPinned(fop: FilterOptionParsed): FilterOptionParsed | undefined {

if (hasAggregate(fop.token))
return undefined;

if (isFilterGroupOptionParsed(fop)) {
var newFilters = fop.filters.map(f => withoutAggregateAndPinned(f)).filter(Boolean);
if (newFilters.length == 0)
return undefined;
return ({
...fop,
filters: newFilters,
pinned: undefined
}) as FilterOptionParsed;
};

return {
...fop,
pinned: undefined
};
}

export function getTokenParents(token: QueryToken | null | undefined): QueryToken[] {
const result: QueryToken[] = [];
while (token) {
Expand Down
Loading

0 comments on commit add8d37

Please sign in to comment.