- 📫 You can reach me at [email protected]
dlidstrom / minaglosor Goto Github PK
View Code? Open in Web Editor NEWSmall website where you can practice on words.
Home Page: http://minaglosor.se
License: MIT License
Small website where you can practice on words.
Home Page: http://minaglosor.se
License: MIT License
Så här:
(function () {
//'use strict'; allow default mode here, to be able to capture more detail
angular.module('mgApp')
.config(ExceptionHandlerDecorator);
ExceptionHandlerDecorator.$inject = ['$provide'];
function ExceptionHandlerDecorator($provide) {
// gör det här snyggare...
$provide.decorator(
'$exceptionHandler', ['$delegate', '$injector', function ($delegate, $injector) {
var apiUrl = '/api/logerror';
return function (exception, cause) {
// original implementation
$delegate(exception, cause);
// avoid sending a bunch of the same error
var cache = {};
var out = FormatMsg(exception);
if (cache.hasOwnProperty(out) == false) {
try {
// service locator pattern...
var $http = $injector.get('$http');
$http.post(
apiUrl,
{
message: out
});
} catch (e) {
}
cache[out] = true;
}
};
}]);
function FormatMsg(ex, stack) {
if (ex == null) return '';
var url = ex.fileName != null ? ex.fileName : document.location;
if (stack == null && ex.stack != null) stack = ex.stack;
// format output
var out = ex.message != null ? ex.name + ": " + ex.message : ex;
out += ": at document path '" + url + "'.";
if (stack != null) {
try {
// not sure about the stack property, best be careful...
out += "\n at " + stack;
} catch (e) {
}
}
return out;
}
}
})();
public class LogErrorController : ApiController
{
public HttpResponseMessage Post(JavaScriptExceptionMessage message)
{
ErrorSignal.FromCurrentContext().Raise(new JavaScriptException(message.Message));
return Request.CreateResponse(HttpStatusCode.OK);
}
private class JavaScriptException : Exception
{
public JavaScriptException(string message)
: base(message)
{
}
}
}
När man lägger till dom. Taggen kan stå kvar för nästa ord. Senare ska man kunna öva allt för en viss tagg.
Taggarna kan sparas i ordlistan. På så sätt kan man sortera dom när man påbörjar ny övning. Dvs visa kapitel 1 först, osv. Ska det heta tagg, etikett, kategori eller nåt annat?
Så här:
(function () {
'use strict';
angular.module('mgApp')
.factory('httpRequestInterceptor', HttpRequestInterceptor);
HttpRequestInterceptor.$inject = ['$q', 'Toaster'];
function HttpRequestInterceptor($q, toaster) {
return {
responseError: function (response) {
if (response.status === 500) {
// internal server error
toaster.error(response.statusText);
} else {
// validation error
var error = ErrorParser(response);
var html;
if (error.modelState && error.modelState.length) {
html = ModelStateErrors(error.modelState);
} else if (error.exceptionMessage) {
html = ModelStateErrors('Exception: ' + error.exceptionMessage);
} else if (error.message) {
html = ModelStateErrors('Error: ' + error.message);
} else if (response && response.status) {
html = ModelStateErrors('Internal Server Error: ' + response.status);
} else {
html = ModelStateErrors('Unknown error occurred');
}
toaster.warning('Warning', html);
}
return $q.reject(response);
}
};
}
angular.module('mgApp')
.config(Config);
Config.$inject = ['$httpProvider'];
function Config($httpProvider) {
// enable when the rest is working...
//$httpProvider.interceptors.push('httpRequestInterceptor');
}
function ErrorParser(response) {
var data = {
modelState: [],
message: (response || {}).message
};
if (!response) return data;
if (response.data) {
angular.extend(data, {
exceptionMessage: response.data.exceptionMessage,
exceptionType: response.data.exceptionType,
stackTrace: response.data.stackTrace,
message: response.data.message
});
}
// convert model state into something usable
if (response.modelState || (response.data && (response.modelState = response.data.modelState))) {
var modelState = response.modelState;
for (var s in modelState) {
var state = {
field: s.replace('criteria.', ''),
reasons: modelState[s].join(', ')
};
data.modelState.push(state);
}
}
return data;
}
function ModelStateErrors(modelState) {
var dl = '<dl>';
for (var k in modelState) {
dl += '<dt>' + modelState[k].field + '</dt>';
dl += '<dd>' + modelState[k].reasons + '</dd>';
}
return dl;
}
})();
När man lägger till ett ord så kan man ange en undertext. Den visas sen under den persiska texten, om den finns tillgänglig.
T.ex. Börja öva
HTTP/1.1 405 Method Not Allowed
Allow: GET, HEAD, OPTIONS, TRACE
Content-Type: text/html
Server: Microsoft-IIS/8.0
X-Powered-By: ASP.NET
Date: Tue, 11 Mar 2014 09:14:38 GMT
Content-Length: 1293
Proxy-Connection: Keep-Alive
Connection: Keep-Alive
Age: 0
Lösningen kan vara http://stackoverflow.com/questions/6147181/405-method-not-allowed-in-iis7-5-for-put-method
Sorteringsordningen beror på registreringsdatum och enligt nedan:
Med wrapper:
(function () {
'use strict';
angular.module('mgApp')
.factory('Toaster', ToasterProvider);
ToasterProvider.$inject = ['toaster'];
function ToasterProvider(toaster) {
return {
success: function (title, body) {
toaster.pop('success', title, body);
},
warning: function (title, body) {
toaster.pop('warning', title, body, 10000, 'trustedHtml');
},
error: function (title, body) {
// sticky
toaster.pop('error', title, body, 0);
},
clear: function () {
toaster.clear();
}
};
}
})();
Framsida/baksida
Mycket att ladda ner
Det tar för lång tid att stänga success-meddelandet.
[TestFixture]
public class When_configuring_the_container
{
[Test]
public void Then_the_potentially_misconfigured_components_should_be_zero()
{
var container = ServiceInterface.Bootstrap.Configure();
var host = (IDiagnosticsHost)container.Kernel.GetSubSystem(SubSystemConstants.DiagnosticsKey);
var diagnostics = host.GetDiagnostic<IPotentiallyMisconfiguredComponentsDiagnostic>();
var handlers = diagnostics.Inspect();
if (!handlers.Any()) return;
var message = new StringBuilder();
var inspector = new DependencyInspector(message);
foreach (var handler in handlers.OfType<IExposeDependencyInfo>())
{
handler.ObtainDependencyDetails(inspector);
}
Assert.That(
handlers,
Is.Empty,
message.ToString());
}
}
Så här:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// enable elmah
config.Services.Add(typeof(IExceptionLogger), new ElmahExceptionLogger());
...
}
}
User
Word [Tags, WordLists]
WordList [Owner, Users]
WordScore [Owner, Word]
PracticeSession [Owner, PracticeWords]
PracticeWord [Word, Score]
Ladda sen en uppdatering som kan dra igång RavenDB under tiden. Optimera startförfarandet.
var wordLists = session.Query<WordListIndexReadModelIndex.Result, WordListIndexReadModelIndex>()
.Where(x => x.OwnerId == user.Id)
.ProjectFromIndexFieldsInto<WordListIndexReadModelIndex.Result>()
.ToArray();
public class Result
{
public string WordListId { get; set; }
using (Container.BeginScope())
using (var session = Container.Resolve())
{
action.Invoke(session);
session.SaveChanges();
}
public void Install(IWindsorContainer container, IConfigurationStore store)
{
var documentStore = CreateDocumentStore().Initialize();
IndexCreation.CreateIndexes(Assembly.GetExecutingAssembly(), documentStore);
container.Register(
Component.For()
.Instance(documentStore));
container.Register(
Component.For()
.UsingFactoryMethod(k => CreateSession(k.Resolve()))
.LifeStyle.Is(Lifestyle));
}
if (name.Length > 1024)
{
throw new ArgumentOutOfRangeException("name", "Name cannot be longer than 1024 characters");
}
Id = id;
OwnerId = owner.Id;
Name = name;
DomainEvent.Raise(new WordListRegisteredEvent(Id, OwnerId, Name));
}
[JsonConstructor]
private WordList()
{
}
public string Id { get; private set; }
public string OwnerId { get; private set; }
public string Name { get; private set; }
}
public class WordListRegisteredEvent : IDomainEvent
{
public string WordListId { get; private set; }
public string OwnerId { get; private set; }
public string Name { get; private set; }
public WordListRegisteredEvent(string wordListId, string ownerId, string name)
{
Name = name;
OwnerId = ownerId;
WordListId = wordListId;
}
}
public class WordListRegisteredEventHandler : AbstractHandle<WordListRegisteredEvent>
{
public override void Handle(WordListRegisteredEvent ev)
{
ExecuteCommand(new CreateWordListIndexReadModel(ev.WordListId, ev.OwnerId, ev.Name));
}
}
public class CreateWordListIndexReadModel : ICommand
{
private readonly string wordListId;
private readonly string ownerId;
private readonly string name;
public CreateWordListIndexReadModel(string wordListId, string ownerId, string name)
{
this.wordListId = wordListId;
this.ownerId = ownerId;
this.name = name;
}
public void Execute(IDocumentSession session)
{
session.Store(new WordListIndexReadModel(wordListId, ownerId, name));
}
}
Så att man kan använda från ControllerBase. Två interface på frågor och kommandon så att man bara kan köra synkront på mvc-sidan.
Kolla på Gist
Byt samtidigt till Angular 1.5, gör komponenter av allting och integrera med orutinen enligt angular-ui/ui-router#2793
Samtidigt kan du göra om alla komponenter till jsx: http://reactjs.net/guides/cassette.html
Epic success!
T.ex. när orden listas.
Kan t.ex. kollas efter varje sent confidence. Kan komma tillbaka som ett svar till det. Kan visas som sticky toastr. Vore bra med en lista av achievements och vilka man har uppnått själv. Kom på några roliga namn och svåruppnådda nivåer blandat med enklare.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.